Distributed system of autonomously controlled mobile agents

ABSTRACT

A system includes a drivable surface that includes location encoding markings. A mobile agent is provided that is capable of assuming a plurality of different lateral positions while traveling along the surface. The mobile agent includes a drive motor, an imaging system, a vehicle wireless transceiver, and a microcontroller. The mobile agent is adapted to detect the markings as the mobile agent travels along the surface, to ascertain a current lateral position of the mobile agent with respect to the surface, and to maintain a substantially consistent lateral position of the mobile agent with respect to the surface (for example to follow a lane). A basestation may be provided that includes a controller operatively coupled to a basestation wireless transceiver. An action to be implemented by the mobile agent can be determined by the basestation and wirelessly communicated to the mobile agent.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims priority as a continuation of U.S. Utilityapplication Ser. No. 13/707,512, for “Distributed System of AutonomouslyControlled Toy Vehicles” (Atty. Docket No. ANK001CONT), filed on Dec. 6,2012, which is incorporated herein by reference. U.S. Utilityapplication Ser. No. 13/707,512 claimed priority as a continuation ofU.S. Utility application Ser. No. 12/788,605, for “Distributed System ofAutonomously Controlled Toy Vehicles” (Atty. Docket No. ANK001), filedon May 27, 2010, which is incorporated herein by reference. U.S. Utilityapplication Ser. No. 12/788,605 claimed priority from U.S. ProvisionalPatent Application Nos. 61/181,719, filed on May 28, 2009, and61/261,023, filed on Nov. 13, 2009, both of which are incorporatedherein by reference.

BACKGROUND OF THE INVENTION

1. Field of the Invention

The invention is in the technical field of electronic toys. Morespecifically, the invention pertains to mobile toys such as electroniccars and model railroads.

2. Description of Related Art

Many electronic toys are controlled by a human operator. Such examplesinclude radio and remote controlled cars and model trains that arecontrolled through a handheld device.

These kinds of toys have little or no ability to sense and interactintelligently and flexibly with their environment. Also, they do nothave the ability to adjust their behavior in response to the actions ofother toys. Further, many toys are physically constrained to slot ortrack systems and are therefore restricted in their motion.

SUMMARY OF THE INVENTION

The invention is a toy system that includes a drivable surface comprisedof a plurality of segments, e.g., without limitation, a straightsegment, an intersection segment, a left-curve segment, a right-curvesegment, a left-turn segment, a right-turn segment, and/or any othersuitable and/or desirable segment that can be envisioned. Each segmentincludes markings which encode locations on the segment and which encodea location of the segment on the drivable surface. The toy system alsoincludes at least one toy vehicle (or mobile agent). The toy vehicle (ormobile agent) can take on any suitable and/or desirable form, such as,without limitation, a vehicle (e.g., a car, a truck, an ambulance, etc),an animal, or any other desired form. The toy vehicle includes at leastone motor for imparting motive force to the toy vehicle, an imagingsystem operative for taking images of the markings, a vehicle wirelesstransceiver, and a microcontroller operatively coupled to the motor, theimaging system, and the vehicle wireless transceiver. Themicrocontroller is operative for controlling, via the motor of the toyvehicle, detailed movement of the toy vehicle on the drivable surfacebased on images taken of the markings of the drivable surface by theimaging system. Lastly, the toy vehicle includes a basestationcomprising a controller and a basestation wireless transceiveroperatively coupled to the controller. The controller is operative fordetermining via wireless communication from each vehicle wirelesstransceiver to the basestation wireless transceiver a current locationof the toy vehicle on the drivable surface based on images taken of themarkings of the drivable surface by the imaging system of the toyvehicle. The controller stores a virtual representation of the drivablesurface and determines based on said virtual representation and thecurrent location of each toy vehicle on the drivable surface an actionto be taken by the toy vehicle on the drivable surface, such as, withoutlimitation: vehicle speed, vehicle acceleration, vehicledirection/heading, the state of at least one light of the vehicle,and/or a sound output by an audio speaker of the vehicle. Lastly, thecontroller communicates to the microcontroller of each toy vehicle theaction to be taken by the toy vehicle on the drivable surface viawireless communication from the basestation wireless transceiver to thevehicle wireless transceiver.

The microcontroller of each toy vehicle can be responsive to the actioncommunicated by the controller for controlling the detailed movement ofthe toy vehicle on the drivable surface based on images taken of themarkings of the drivable surface by the imaging system to cause the toyvehicle to move toward a future location on the drivable surface. Thedetailed movement of the toy vehicle comprises the microcontroller'sdetailed implementation of the action communicated by the controller,which action comprises one or more acts to be performed by the toyvehicle to move to the future location. More specifically, the futurelocation resides in the controller as a static or dynamic location wherethe controller desires the toy vehicle to move. The action communicatedby the controller to the microprocessor comprises one or more actions tobe performed by the toy vehicle in furtherance of the overall goal orplan of movement of the toy vehicle to the future location. Lastly, thedetailed movement of the toy vehicle comprises, for each action to beperformed by the toy vehicle, one or more steps to be taken by the toyvehicle in furtherance of the action.

As can be seen, the future location, the one or more actions to beperformed by the toy vehicle, and the detailed movement/steps to betaken by the toy vehicle represent a distributed command hierarchy, withthe future location stored at the controller being at the top of thehierarchy, the one or more actions to be performed communicated by thecontroller to the microprocessor in the middle of the hierarchy, and thedetailed movement/steps to be taken by the toy vehicle being at thebottom of the hierarchy. Each successively lower level of thisdistributed control hierarchy comprises increasingly more detailedinstructions/commands in furtherance of a higher level command. Forexample, without limitation, the microcontroller may need to implement anumber of steps in fulfillment of an action (e.g., change lanes to theleft) communicated to the microcontroller by the basestation. Similarly,the basestation may need to implement a number of actions in fulfillmentof the overall goal or plan of movement of the toy vehicle to the futurelocation.

The toy system can also include a plurality of toy vehicles. Thecontroller can be operative for controlling the interaction of theplurality of toy vehicles on the drivable surface in a coordinatedmanner with each other via wireless communication from the basestationwireless transceiver to the vehicle wireless transceivers of theplurality of toy vehicles.

The controller can be operative for controlling at least one of thefollowing of at least one of the plurality of toy vehicles: a velocityor acceleration of the toy vehicle; a set, e.g., row, of markings(driving lane) the toy vehicle follows on the drivable surface; achanging of the toy vehicle from one set of markings (driving lane) onthe drivable surface to another set of markings (driving lane) on thedrivable surface; a direction the toy vehicle takes at an intersectionof the drivable surface; the toy vehicle leading, following, or passinganother toy vehicle on the drivable surface; or activation ordeactivation of a light, an audio speaker, or both of a toy vehicle. Thecontroller can also be operative for updating control software (e.g.,without limitation, firmware) of the vehicle that controls the operationof the vehicle microprocessor.

The toy system can also include a remote control in communication withthe basestation, wherein the basestation is responsive to commandsissued by the remote control for controlling at least one of thefollowing via the basestation: which one of a plurality of toy vehiclesis responsive to the commands issued by the remote control; a velocityor acceleration of a toy vehicle responsive to commands issued by theremote control; a changing of a toy vehicle responsive to commandsissued by the remote control from one set of markings (driving lane) onthe drivable surface to another set of markings (driving lane) on thedrivable surface; a direction a toy vehicle responsive to commandsissued by the remote control takes at an intersection of the drivablesurface; a toy vehicle responsive to commands issued by the remotecontrol leading, following, or passing another toy vehicle on thedrivable surface; or activation or deactivation of a light, an audiospeaker, or both of a toy vehicle responsive to commands issued by theremote control.

The controller can be operative for controlling, either in response toor in the absence of a response to movement of a remote controlledvehicle, at least one of the following of each toy vehicle not under thecontrol of the remote control: a velocity or acceleration of the toyvehicle; a set of markings (driving lane) the toy vehicle follows on thedrivable surface; a changing of the toy vehicle from one set of markings(driving lane) on the drivable surface to another set of markings(driving lane) on the drivable surface; a direction the toy vehicletakes at an intersection of the drivable surface; the toy vehicleleading, following, or passing another toy vehicle on the drivablesurface; or activation or deactivation of a light, an audio speaker, orboth of a toy vehicle.

The drivable surface can include at least one multi-state device (e.g.,a traffic light. a railroad crossing gate, a draw bridge, a trap on aroad piece, a garage door, etc.) responsive to the controller forchanging from a one state to another state.

The imaging system can include a light source outputting light towardthe markings and an imaging sensor for detecting light from the lightsource reflected from the markings.

A layer can cover the markings of at least one segment. The layer can betransparent to light output by the vehicle's imaging system but opaqueat human visible light wavelengths. The markings can be visible orinvisible at frequencies detectable by humans.

The controller can be responsive to the current location of the toyvehicle on the drivable surface and the virtual representation of thedrivable surface for causing a display to display the following: avirtual image of the drivable surface and a virtual image of at leastone toy vehicle and its position, velocity, or both on the virtual imageof the drivable surface.

The drivable surface can be comprised of a plurality of discretesegments operatively coupled together.

The invention is also a method of controlling movement of one or moreself-propelled toy vehicles (or mobile agents) on a drivable surfacethat includes markings which define one or more paths of toy vehicletravel on the drivable surface and which encode locations on thedrivable surface, wherein each toy vehicle includes an imaging systemfor acquiring images of the markings. Each toy vehicle (or mobile agent)can take on any suitable and/or desirable form, such as, withoutlimitation, a vehicle (e.g., a car, a truck, an ambulance, etc) ananimal, or any other desired form. The method comprises (a) whiletraveling on the drivable surface, a toy vehicle acquiring an image of aportion of the markings of the drivable surface via the toy vehicle'simaging system; (b) responsive to the image acquired in step (a), thetoy vehicle controlling its movement on the drivable surface; (c) thetoy vehicle wirelessly communicating to a basestation data regarding alocation on the drivable surface where the portion of the markings instep (a) were acquired; (d) the basestation responsive to the datacommunicated in step (c) for updating a position of the toy vehicle in avirtual representation of the drivable surface; (e) the basestationdetermining an action to be taken by the toy vehicle on the drivablesurface based on the data regarding the location on the drivable surfaceof the portion of the markings acquired in step (a); and (f) thebasestation wirelessly communicating to the toy vehicle said action tobe taken by the toy vehicle on the drivable surface.

The method can also include repeating step (a)-(f) at least one time.Step (b) can include the toy vehicle being responsive to the actioncommunicated in step (f) for controlling its movement on the drivablesurface.

Step (b) can include the action communicated in step (f) causing the toyvehicle to change from traveling on a first path defined by a first setof markings to a second travel path defined by a second set of markings,whereupon the action communicated in step (f) includes said secondtravel path.

Step (b) can also include the toy vehicle controlling its velocity, itsacceleration, its steering direction, a state of one or more of itslights, whether a vehicle audio replication device outputs sound.

The method can also include the basestation determining the virtualrepresentation of the drivable surface from one of the following: adefinition file accessible to the basestation; exploration of thephysical layout of the drivable surface by one or more toy vehiclesacting under the control of the basestation and communicatinginformation regarding the physical layout of the drivable surface to thebasestation; or a bus system of the drivable surface which is comprisedof a plurality of segments, wherein each segment includes a bus segmentand a microcontroller that communicates with the basestation and withthe microcontroller of each adjacent connected segment via the bussegment.

Step (a) can include acquiring the image of the markings via anoverlayer that is transparent to the toy vehicle's imaging system butwhich is opaque at human visible light wavelengths.

The method can include repeating steps (a)-(f) for each of a pluralityof toy vehicles, wherein: step (e) can also include the basestationdetermining for each toy vehicle a unique action to be taken by the toyvehicle; and step (f) can also include the basestation wirelesslycommunicating to each toy vehicle the unique action to be taken by saidtoy vehicle on the drivable surface in a manner whereupon the pluralityof toy vehicles move in a coordinated manner on the road.

The method can also include the basestation receiving a command for thetoy vehicle from a remote control, wherein step (e) can also include thebasestation determining the action to be taken by the toy vehicle on thedrivable surface based on the command received from the remote control.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is an overview of the system components of the present invention,namely, a drivable surface, one or more vehicles, a basestation, and auser interface;

FIG. 2 are exemplary markings that may be included on the road piecesshown in FIG. 1, wherein the markings encode information regarding theidentity of the type of road piece, e.g., straight, intersection, etc.,a unique location on the road piece, and a center line suggesting anoptimal position for the vehicle if it desires to stay within its lane;

FIGS. 3-5 are examples of an intersection road piece for a streetdriving mode of the invention, a multi-lane straight road piece for astreet driving mode of the invention, and a multi-lane curved road piecefor a racing mode of the invention, respectively;

FIG. 6 is an illustration of three road pieces and their connectionpoints, and a basestation connected to a bus system of the road pieces,wherein each road piece includes a controller that facilitatescommunication with other road pieces;

FIGS. 7-9 are illustrations of a drivable surface including road piecesthat vehicles drive on to discover the layout of the drivable surface;

FIG. 10 is a block diagram of a vehicle of the present invention thatincludes a microcontroller including supporting hardware (RAM, ROM,etc.) that operates under the control of an embedded software program, awireless radio network, a motor drive unit, an imaging system, and asecondary input/output system, all running under the control of themicrocontroller;

FIGS. 11A and 11B are scans of the markings on the road pieces by animaging sensor of the imaging system of the vehicle shown in FIG. 10using visible light and using near infrared (NIR) light, respectively;

FIG. 12A is a schematic view showing details of the vehicle imagingsystem of FIG. 10 in an outline of a vehicle;

FIG. 12B is a perspective view of an exemplary location of the slot ofthe vehicle imaging system of FIG. 12A;

FIG. 12C is an isolated schematic view of the vehicle imaging system ofthe vehicle of FIG. 12A;

FIGS. 13A and 13B show the position change of the imaging system whenthe vehicle has a steering axis that is displaced by a distance d₁ fromthe imaging system;

FIGS. 13C and 13D show how the position of the imaging system changeswhen d₁ is equal to 0;

FIGS. 14A and 14B are top and bottom perspective views of a vehicleshowing the location of a battery slot and charging openings,respectively, for charging a battery of the vehicle utilized to supplypower to the microcontroller, the wireless radio network, the motordrive unit, the imaging system, and the secondary input/output systems;

FIGS. 15A-15C are a raw scan of a sample marking on a road piece, thescan after brightness rescaling, and a final output after classificationof the scan;

FIG. 16 is a graph illustrating a gradient-following approach utilizedon the raw pixel data of FIG. 15A to generate the final classified scanshown in FIG. 15C;

FIGS. 17A-17C show steering control errors for a straight road piecewhere the vehicle tries to drive using a straight bias, the error if thevehicle tries to drive a left curved road using a straight bias, and areduction in the error if the vehicle is biased to drive a left curve onthe left curved road piece;

FIG. 18 is a flow chart showing the steps of a control algorithmimplemented by the microcontroller of each vehicle;

FIG. 19 is a block diagram of the basestation of FIG. 1 showing itsinteraction with various other possible components of the system;

FIG. 20 is a view of a drivable surface that resides in a memory of thebasestation;

FIG. 21 is a larger example of a drivable surface that can be stored inthe memory of the basestation;

FIGS. 22A-25 are graphs of an A* search used to find the shortestdistance between two nodes, namely, node A and node D;

FIG. 26 is an illustration of an intersection object that is stored in amemory of the basestation showing left and right entry points occupiedwhere the vehicle driving from the right has first priority to advancedue to its earlier arrival time;

FIG. 27 is a graph showing relationship between time, velocity,acceleration, and distance during a speed change;

FIGS. 28A and 28B are illustrations related to a distance keepingcomputation performed by the basestation to maintain a safe distancebetween moving vehicles;

FIGS. 29-32 are illustrations of local planning by the basestation tofind a series of actions and resulting states to allow a vehicle trappedin a lane by several other vehicles to pass said vehicles;

FIG. 33 shows the sampling of possible future states that are possiblefrom the state depicted in FIG. 31 for the passing vehicle by varyingthe passing vehicle's speed or lane;

FIG. 34 is a flow chart showing the steps of a control algorithmimplemented by the basestation;

FIGS. 35A and 35B are perspective views of the exemplary remote controlshown in block diagram form in FIG. 1;

FIGS. 36A and 36B are examples of a road piece that include avehicle-activated trap for use with a racing mode of the presentinvention;

FIG. 37 is a perspective view of a visualization software that runs on apersonal computer (PC) of FIG. 19 to display the system state on avisual display (also shown in FIG. 19);

FIGS. 38A-38C are an example of a lateral speed estimation approach thatcan be executed by each vehicle;

FIG. 39 is an example of a maneuver that can be taken by a vehicle 2utilizing the lateral speed estimation approach described in connectionwith FIGS. 38A-38C;

FIG. 40 is an illustration of markings printed on a road piece instandard visible ink or dye that is visible to humans covered with amaterial that is transparent to light with a wavelength outside thevisible spectrum, whereupon an optical sensor of a vehicle with a lightsource matching the materials transparency wavelength can see theunderlying markings while a human can only see the surface of thematerial since it is not transparent to visible light;

FIG. 41 is an example of a segment, wherein the bottom-left portion ofthe segment appears black as would be seen by the human eye and the topportion shows the markings that would be visible to NIR light that wouldbe detectable by the imaging system of each vehicle;

FIG. 42 is an illustration of an exemplary custom designed drivablesurface for use with the system that is designed using a softwareapplication; and

FIG. 43 is a perspective view of a custom designed drivable surface thatcan be designed by a user and then sent to the user after manufacturing.

DETAILED DESCRIPTION OF THE INVENTION

The present invention will be described with reference to theaccompanying figures.

The present invention is a system of toy vehicles that can driveautonomously through an environment without being physically constrainedto a slot or track. The vehicles use specially designed sensors thatallow them to determine their position in an environment. This positioninformation is processed by software (e.g., without limitation,artificial intelligence (AI) software) running on a separate computer orbasestation. Operating under the control of this software, thebasestation decides on actions for the vehicles and sends them highlevel controls. Whereas previous vehicles require entirely humancontrol, the software can control the vehicles and can command them toexecute complex actions. This allows the vehicles to interact andrespond to the actions of other vehicles as well as other objects in theenvironment.

While each vehicle can be controlled autonomously via the software,hybrid control is also allowed. This allows users to take control of oneor more specific vehicles from the basestation. The basestationcontinues to track the behavior of all of the vehicles and adjusts thebehavior of the vehicles not under user control in response to theuser-controlled vehicle(s). Users can decide which vehicle(s) is/arecontrolled by the basestation and which are controlled by the users.

The vehicles drive on a drivable surface which is a series of roadpieces (e.g., straight, left turn, right turn, intersection) that arephysically connected together. They can drive forward and backwards, andcan also turn freely. This is fundamentally different from other toysthat utilize connected drivable pieces and are physically constrained toa slot or track. Further, the vehicles use sensing and controltechnologies to determine the location of the drivable lanes on theroad. This allows the vehicles in the system to interact and executecomplex behaviors as described above. The vehicles can also choose toleave a road and drive to another part of the environment. This isanother significant difference from toys that utilize a slot or tracksystem.

Using encoding technology, position information is embedded into eachroad piece. As a vehicle travels over a road piece, it emits light thatis reflected by the road piece and the reflected light encodesinformation about the vehicle's position. The vehicle's sensor detectsthis encoded light and a microcontroller of the vehicle can use it todecode position and other information. This process can be hidden fromusers by using emitted and reflected light that is outside the normalhuman visible spectrum (e.g., infrared or ultra-violet).

The system has two primary modes of operation, racing and non-racing. Inracing mode, the road pieces are designed like a race track, and manyvehicles can travel in close physical proximity to each other as theytravel around the drivable surface. In non-racing mode, the road piecesare designed like standard streets and highways such as those found intypical urban driving. Here the lanes are appropriately spaced apart andvehicles can choose to follow traffic rules and deal in appropriate wayswith other vehicles and road situations. These two modes can be combinedtogether to build drivable surfaces that have both racing and non-racingsections.

With reference to FIG. 1, the system has four major components:

-   -   Drivable surface 6—These are physical models of roads that can        include relevant objects such as stop signs, traffic lights 8,        and railroad crossings.    -   Vehicles 2—The vehicles are mobile agents in the system capable        of independent motion. They can be physically modeled after        cars, trucks, ambulances, etc., animals, or any other desired        form. Each vehicle includes one or more sensors 3 that can read        information from the drivable surface and a communication module        that can send and receive (desirably wirelessly) commands from a        basestation.    -   Basestation 22—The basestation is a separate software controlled        computer. Under the control of its software, the basestation        maintains the state of the vehicles and other agents and sends        and receives commands to and from the vehicles and other agents        in the system. The computer can be a general purpose computer, a        video game console, and the like, that the software configures        to implement the present invention in the manner described        hereinafter. The software can be permanently or dynamically        stored on any suitable and/or desirable computer readable medium        that facilitates operation of the computer under the control of        the software. Non-limiting examples of suitable computer        readable medium include RAM, ROM, EPROM, optical disks, flash        drives, magnetic storage medium, and the like.    -   User Interface 104/132—The user interface includes all the        hardware and software that a human uses to interact with the        system.

1 Road Pieces:

With continuing reference to FIG. 1, vehicles 2 drive on a surface 4that includes individual road pieces 6 that connect at specifiedconnection points and can be reconfigured to construct any desiredstructure. This structure is referred to as a drivable surface. Basicdrivable surfaces can be created from a series of straight road pieces6-1; 90-degree turn road pieces 6-3, 6-4, and 6-6; and intersectionpieces 6-2, 6-5, but more sophisticated drivable surfaces can be createdfrom more complex road pieces. Road pieces 6 include continuous regionsthat one or more vehicles can navigate called drivable sections andconnect to each other end-to-end using a simple click-in mechanismpresent at each connection point. Each road piece 6 can also transmitpower to an adjacent road piece 6 and can optionally include amicrocontroller for advanced functionality, such as traffic lights 8.

1.1 Piece Location and Type Identification:

With reference to FIG. 2 and with continuing reference to FIG. 1, eachvehicle 2 identifies its position in the drivable surface by readingmarkings 12 on road pieces 6 as it drives over them using a vehicleonboard imaging system 3. Herein, the road markings are shown in blackon white background for readability and easier understanding. However,these road markings can be made invisible to the human eye and thedrivable surfaces can have any color.

These markings 12 can encode information such as the identity of thetype of road piece 6 the vehicle 2 is currently driving on (e.g.,straight, intersection, etc.), unique locations on that road piece 6,and a line 10 to suggest an optimal position for the vehicle 2 if itdesires to stay within its lane. Herein, this line will be referred toas a center-line 10 but it is important to realize that the vehicle 2 isin no way required or constrained to follow this line. In the exampleshown in FIG. 2, a center-line 10 appears at the center of the drivablelane to allow the vehicle 2 to steer within that lane. Periodicallyalong one or both sides of center-line 10 are a series of rows ofmarkings 12 that encode the piece ID 14 (e.g., right of center-line 10)and the unique location 16 (e.g., left of the center-line 10)identifications (IDs) throughout the lane. While rows of markings aredescribed herein, this is not to be construed as limiting the inventionas it is envisioned that any suitable and/or desirable set of markings(arranged in one or more rows or some other configuration(s)) capable ofperforming the same function as the rows of markings described hereincan be utilized. These identifications can include varying-thicknessbars where each encodes a unique value. While in the examples discussedherein, each bar is either thin or thick representing a 0 or 1 in abinary encoding of information, respectively, the number of unique barthicknesses can be variable and depend primarily on the accuracy andresolution of the vehicle 2 imaging system 3. Depending on the number ofunique piece or location IDs, each ID is encoded over one or moreconsecutive rows of markings 12. A single thicker bar 18, herein a“stop-bar” can replace all bars on either side of center-line 10 to markthe completion of each piece or location ID. It is desirable to have abuffer of space between the extremes of the road markings and theboundaries of the total viewable area of the vehicle imaging system toallow for translational errors that might naturally occur duringdriving.

Each piece ID 14 encodes a unique piece type within the network andremains constant throughout a road piece 6. Each location ID 16 encodesa unique location on that particular road piece 6 and counts up,desirably, from 0. The example segment of FIG. 2 encodes 8-bit piece andlocation IDs 14, 16 over four consecutive rows (allowing up to 256unique IDs for each) and, as shown, identifies the piece as being oftype 16 and includes two location IDs 16 (“ID:11” and “ID:12”)) toidentify unique positions on that piece.

Since piece and location IDs 14, 16 are assumed to be of the samebit-length, stop-bars normally appear on each side of center-line 10simultaneously. Thus, one can therefore represent special informationfrom each road piece 6 at locations that have a stop-bar only on oneside and a normal marking on the other. Such techniques can be used toencode the direction of the road piece 6 (left, straight, or right) inthe first marking row of each road piece to suggest a steering directionto vehicle control software (discussed hereinafter).

With reference to FIGS. 3-5 and with continuing reference to FIGS. 1-2,when a road piece 6 includes multiple lanes 20, each lane 20 can includesuch markings. Since location IDs 16 are unique everywhere on the roadpiece 6, this allows a vehicle 2 to identify on which lane it iscurrently driving.

Desirably, some of the information encoded in the markings 12 isinterpreted directly by the vehicle 2, while other portions are relayedback to basestation 22. Basestation 22 interprets the codes parsed bythe vehicle 2 from these markings 12 and has an internal (virtual)representation of the drivable surface and each possible road piece 6type, allowing it to identify each vehicle's 2 exact position in thedrivable surface and consider this position and the positions of othervehicles in the drivable surface in its commanded behaviors of thevehicle 2. This also allows future expansion or custom-built road pieces6 with only small software updates to basestation 22 rather than havingto also update each vehicle 2.

A software tool used to generate road piece 6 marking schemes can beused to generate road piece surfaces while customizing a variety ofparameters including but not limited to bar widths, spacing betweenbars, spacing between marking rows, the number of marking rows per fulllocation or piece ID, the number of lanes in each direction of traffic,road piece length, road piece curvature, etc. A final option allows theaddition of a checksum bar on each marking row to serve as an errorchecking tool by encoding the parity of the remaining bars.

Such an encoding scheme is not possible within an intersection (shown inFIG. 3) due to many crossing paths. For this reason, location and pieceIDs 14, 16 cease and only center-lines 10 continue within intersections.This enables a vehicle 2 to follow the appropriate center-line 10through an intersection to a desired exit point where it can resumemarking-based position estimation.

The same road piece structure can be used for both street driving andracing versions of the system, except that for the racing version, roadpieces are single direction and include tightly-spaced lanes (see e.g.,FIG. 5). In racing mode, this allows vehicles 2 to shift in eitherdirection in the lane at a finer granularity, while for the street modethis allows realistic lane changing behaviors.

Markings 12 serve several purposes. First, markings 12 allow vehicles 2to identify the road piece 6 type that they are on during drivablesurface initialization (described hereinafter). Next, markings 12 allowthe encoding of various parameters, such as the curvature direction ofthe road piece 6 upon entering a new road piece 6, thus enablingvehicles 2 to better handle control-related challenges. Additionally,markings 12 provide position estimates at sufficiently fine resolutionsto allow basestation 22 to create high-level plans and interactivebehaviors for vehicles 2. Finally, each vehicle 2 is able to accuratelymaintain a heading within a lane 20 using the center-line 10 andestimate its speed and acceleration using the periods of time for whichmarkings are visible or not visible since the precise lengths of thebars and spaces between them are known.

1.2 Structure Identification:

Desirably, basestation 22 knows the exact structure of the drivablesurface. Since a user is free to reconfigure the road pieces 6 at anytime, there are a variety of techniques that enable basestation 22 toidentify the structure of the drivable surface. This structure isdefined by a series of road piece 6 connections. For example, knowingall road piece 6 types and that, for example, connection point “2” ofroad piece “5” connects to connection point “1” of road piece “7”informs basestation 22 the exact relative position and orientation ofthe two road pieces and, if one of the road pieces is already fixed,this anchors the other's global position in the drivable surface. Sinceconnection information is often redundant, the structure can be uniquelyidentified without exhaustively identifying all connection pairs. Onceall road pieces are anchored to the global coordinate frame, basestation22 has complete knowledge about the structure of the drivable surface.

In the following section, three techniques are described how the exactstructure of a drivable surface can be determined by basestation 22.

1.2.1 Reading from File:

The easiest way to identify the drivable surface is to read itsdefinition from a user-defined definition file. This is a simple andeffective method, especially for development purposes.

1.2.2 Instant Electronic Identification:

With reference to FIG. 6 and with continuing reference to all previousFigures, a second technique is possible with road pieces 6 that alsoinclude low cost electronics (e.g., a microcontroller). When road pieces6 are connected to each other, the electronics in each of them are alsoconnected and build a logic network where each road piece 6 can talk toits direct neighbors. All road pieces 6 and basestation 22 are connectedvia a BUS system 24, where the road pieces 6 are slaves and answer tothe basestation's 22 requests. An example of a very efficient bus systemfor this purpose is a ONE-WIRE-BUS from Dallas Semiconductor, wherecommunication occurs over the standard power and ground lines.

Using bus system 24, basestation 22 can determine which road pieces 6are in the network. Besides the bus itself, each road piece 6 needs onlyone digital input/output line per connector. An input/output line allowsa microcontroller in each road piece 6 to choose whether the line isused as an input line to read a signal or an output line to generate asignal. For example, a straight road piece has two connectors 26 (one oneach end), and each connector 26 has one digital input/output line. Afour-way intersection piece has four connectors 26 and therefore fourdigital input/output lines, one per connection point. FIG. 6 is anillustration of road pieces 6 connected to each other and basestation 22in such a way.

In this setup, a single digital I/O line per connection and aminimalistic bus system are enough to allow basestation 22 to exactlydetermine the structure of the connected road pieces 6. This is achievedby basestation 22 causing the digital I/O lines on each road piece tosequentially turn-on, while all the other I/O lines are configured asinputs and listen for signals. Then, basestation 22 interrogates eachroad piece 6 if and where it saw an ON signal. The following describesthe method used to determine the road structure using the example inFIG. 6.

1.2.2.1 Initialization:

With reference to FIG. 6, using bus system 24, basestation 22 determineswhich road pieces are in the network. In the example above it sees roadpieces 6-1, 6-2 and 6-3. At this point, how the pieces are connected toeach other is not known.

1.2.2.1.1 Determine Structure:

-   -   1. Basestation 22 tells the microcontrollers of all the road        pieces 6 to configure their I/O lines as inputs.    -   2. Basestation 22 tells the microcontrollers of road piece 6-1        to set I/O line A as output and set it to ON.    -   3. Basestation 22 asks the microcontrollers of all of the road        pieces 6 whether they see an ON signal.    -   4. The microcontroller of road piece 6-2 will respond that it        sees an ON signal on its I/O line C.    -   5. Basestation 22 now knows that road piece 6-1, I/O line A is        connected to road piece 6-2 I/O line C.    -   6. Basestation 22 tells the microcontroller of all the road        pieces 6 to configure their I/O lines as inputs.    -   7. Basestation 22 tells road piece 6-1 to set line B as output        and turn it ON.    -   8. Basestation 22 again asks all of the road pieces 6 whether        they see an ON signal.    -   9. No piece will respond.    -   10. Basestation now knows that road piece 6-1, I/O line B is NOT        connected.

These steps are repeated for each unknown connection until the drivablesurface structure is fully identified. This method is extremelyefficient (the computational complexity scales linearly with the numberof road pieces 6 in the network) so basestation 22 can react quickly toany changes in the structure. The bus system is interchangeable withpossible alternatives including SPI, CAN, I2C, One-Wire, or a wirelessnetwork technology, as long as bus 24 is capable of determining uniqueIDs from each node and connection point.

1.2.3 Exploring Vehicles:

With reference to FIGS. 7-9 and with continuing reference to allprevious Figs., another method to identify the drivable surfacestructure is to construct the network using one or more vehicles 2. As avehicle 2 drives (transitions) from road piece 6 to road piece 6, itidentifies the road piece 6 types using its vehicle imaging systems 3.Basestation 22 knows the specifications of each road piece 6 type andcan therefore use these transitions to expand its internal drivablesurface graph or virtual representation of the drivable surface. Inorder for this to work, basestation 22 must have a known reference roadpiece 6 in the drivable surface to anchor the drivable sections graph.This known reference position can be a single road piece 6 with uniquetype that must be included within each drivable surface. This road piece6 could be physically connected to basestation 22 to ensure that therest of the network is built off of it. Since there can be manyinstances of other road piece 6 types but only one of this special type,we are guaranteed to be able to uniquely identify any drivable surface.

A method to accomplish this task with one vehicle 2 is to trackunexplored road piece 6 connection points as this drivable surface isconstructed and repeatedly plan paths through the closest unexploredexit until no unexplored exits remain. An example of this method isillustrated in FIGS. 7-9.

In FIG. 7, the system is started with an unknown drivable surfaceconfiguration. The basestation's road piece 6-3 is known and used as ananchor point in the network and basestation 22 is able to identify roadpiece 6-4 as the road piece vehicle 2 is on based on the road piece 6markings 12 parsed by vehicle 2 to basestation 22. The two unexploredroad piece connections 28, 30 are remembered for future exploration.

As shown in FIG. 8, basestation 22 commands vehicle 2 to explore the topconnection point 28, resulting in basestation 22 knowing that roadpieces 6-2 and 6-4 are connected (and their relative orientation), aswell as the two new unexplored connections 32 and 34 to road pieces 6-1and 6-3, respectively.

As shown in FIG. 9, basestation 22 then commands vehicle 2 to take theright-most connection 34, resulting in basestation 22 now knowing thatthe drivable surface includes road pieces 6-2, 6-3 and 6-4 as well astheir orientations and how they are anchored to the basestation roadpiece 6-3. This approach continues until no unexplored connectionsremain.

Multiple vehicles 2 can more quickly identify the drivable surfacerepresentation when doing this processing simultaneously but must takeinto account any uncertainty in their locations in order to preventcollisions. For example, two intersection road pieces 6 in the systemmay have the same type so the vehicles 2 must be sure that if there isuncertainty about which piece they are on, they are performing actionsthat under any possible scenario will not cause them to collide duringexploration.

While this approach results in cheaper road pieces 6 since we reuseexisting vehicles 2 and imaging systems 3 for drivable surfaceidentification, it requires a full drivable surface exploration byvehicles 2 each time a change is made.

1.2.4 Ability to Print Custom Networks:

Optionally, software can be provided that runs on an optional generalpurpose computer and which gives a user the ability to design drivablesurfaces having custom road pieces. While standard road pieces 6 willinclude the most common types, such as without limitation, straightsections, turns, intersections etc., some users may want tocustom-design non-standard road pieces 6. This software will allow theuser to do so, or even design entire sophisticated drivable surfaces.For example, a user could design a single, sharp 45 degree turn or alarge scale racing track with extra wide roads and pit stop exits.

Using this software, the user can request that each non-standard roadpiece 6 or even an entire drivable surface be printed on, for example,without limitation, paper or transparency. The user can then attach thisprintout to his preferred surface.

The software can also provide a definition file for the custom designednetwork which can be uploaded to the user's basestation 22, so that thebasestation 22 understands the custom road piece(s) 22 and/or drivablesurface and can plan appropriate actions for the vehicles 2.

2 Vehicles:

With reference to FIG. 10 and with continuing reference to all previousFigs., vehicles 2 are special mobile parts of the system which canfreely move on predefined drivable road pieces 6 as describedpreviously. Vehicle 2 motions are not constrained by a physical barrierlike a slot or track. Rather, vehicle 2 can freely move anywhere alongthese road pieces 6. To allow such behavior, vehicle 2 has a vehicleimaging system 3 that enables vehicles to estimate its position in thedrivable surface and vehicle 2 is in periodic wireless contact withbasestation 22.

Each vehicle 2 can be fully controlled by basestation 22 or throughhybrid control between a user via a remote control 132 and basestation22. If a user controls a vehicle 2, he can choose to have the vehicle2/basestation 22 handle low level controls such as steering, stayingwithin lanes, etc., allowing the user to interact with the system at ahigher level through commands such as changing speed, turningdirections, honking, etc. This is useful since vehicles 2 are small andcan move fast, making it difficult for a human to control the steering.

2.1 Vehicle System Components:

Vehicles 2 described herein are different from remote controlled toycars available today. To allow for the above-described behaviors,vehicles 2 include various robotics and sensor technologies. Eachvehicle 2 includes five main system components described in thefollowing sections and illustrated in FIG. 10.

2.1.1 Microcontroller:

A microcontroller 40 is the main computer on each vehicle 2. It performsall the control functions necessary to allow vehicle 2 to drive, sense,and communicate with basestation 22 and monitor its current state (likeposition in the drivable surface, speed, battery voltage, etc.).Desirably, microcontroller 40 is low cost, consumes little power but ispowerful enough to intelligently deal with large amounts of sensor data,communications requirements, and perform high speed steering and speedcontrol. Microcontroller 40 includes a variety of peripheral devicessuch as timers, PWM (pulse width modulated) outputs, A/D converters,UARTS, general purpose I/O pins, etc. One example of a suitablemicrocontroller 40 is the LPC210x with ARM7 core from NXP.

2.1.2 Wireless Network Radio:

Each vehicle 2 includes a wireless network radio 42 (i.e., a wirelessradio transceiver) operating under the control of microcontroller 40 tofacilitate communication between microcontroller 40 and basestation 22.Potentially, many vehicles may be driving on the drivable surfacesimultaneously and basestation 22 needs to communicate with all of them,regardless of whether they are controlled by users, by basestation 22,or both. This means that vehicles 2, traffic lights 8, basestation 22,and remote controls 132 for user interaction can be part of a wirelessnetwork which can handle multiple (potentially hundreds of) nodes. Thenetwork topology can be set up as a star network, where each vehicle 2,remote control 132, etc. can communicate only with basestation 22, whichthen communicates with vehicles 22, remote control 132, etc. The secondpossibility is to choose a mesh network topology, where nodes cancommunicate directly with other nodes.

The star network version is simpler and requires less code space onmicrocontroller 40 but still fulfills all the requirements needed forthe system. Examples of suitable wireless network technologies includeZigBee (IEEE/802.15.4), WiFi, Bluetooth (depending on the capabilitiesof future versions), etc. Specifically, ZigBee (IEEE/802.15.4) orrelated derivatives like SimpliciTI from Texas Instruments offer thedesired functionality like data rate, low power consumption, smallfootprint and low component cost.

2.1.3 Imaging System:

The imaging system 3 of vehicle 2 allows the vehicle 2 to determine itslocation in the drivable surface. A 1D/2D CMOS imaging sensor 46 (shownin FIG. 12A) inside vehicle 2 facing the surface of the drivable roadpiece underneath is used to take images of the surface at highfrequencies (at times up to 500 Hz or more).

As described above, road pieces 6 include a structured pattern ofoptical markings 12 that are desirably visible only in the near infraredspectrum (NIR), in the IR (infrared) spectrum or in the UV (ultraviolet) spectrum, and are completely invisible to the human eye. This isachieved by a very specific combination of IR, NIR, or UV blocking inkand a matching IR, NIR, or UV light source. Invisible markings aredesired since the markings are not visible to the user, making theappearance of road pieces 6 closer match that of real roads. However,without changes in the hardware, the same system works with visible inkas well (such as black), allowing users to print their own road pieceson a standard printer without having to buy special cartridges. The1D/2D CMOS imaging sensor in the vehicle, together with an LED lightsource 44 (shown in FIG. 12C) emitting light at a specific (for exampleNIR) frequency, can read those markings and interpret them.

For example, a 1D linear pixel array TSL3301 from TAOS INC or aMLX90255BC from Melexis can be used as the image sensor 46. The image ofthe surface of a road piece 16 can be focused with a SELFOC lens array48 and illuminated by an NIR LED light source 44 emitting light forexample at 790 nm. The pattern of markings 12 on the road pieces 6 wouldin that case be printed with an ink or dye which absorbs NIR light. Thepeak absorption frequency is approximately the same wavelength as thatat which the LED light source 44 is emitting light, 790 nm in thisexample. A marking therefore appears black to the imaging system 3 andthe surface without a marking appears white (see FIGS. 11A and 11B).

The combination of LED light source 44 with peak emitting frequencyapproximately equal to the peak absorption frequency of the inkcompletely eliminates the necessity of a light filter if light fromoutside light sources can be shielded by the vehicle's body. This is thecase with the vehicle 2 design shown in FIG. 12B. The mentionedwavelengths are of course only examples, and any CMOS sensor/LED/inkcombination in the NIR/IR spectrum or even UV spectrum would work thesame way, and a variety of inks/dyes are available from numerousmanufacturers like EPOLIN, MaxMax etc. The microcontroller 40 on thevehicle 2 reads at a high frequency from the imaging system 3 and usesclassification algorithms to interpret the markings 12 from eachreading. Microcontroller 40 then transmits the parsed markings tobasestation 22 via wireless network radio 42 for interpretation intovehicle's 2 global position in the drivable surface.

2.1.3.1 Location within the Vehicle:

With reference to FIGS. 13A-13D and with continuing reference to allprevious figures, an important parameter is the distance d₁ between theposition of the imaging system 3 and the steering axis 50 in a vehicle2. Since vehicle 2 steers using a differential drive, describedhereinafter, the steering axis 50 is the axis along the two drive wheels58 and the steering point 52 is the center between the two drive wheels54.

As described herein, imaging system 3 is used to gather sensorinformation allowing vehicle 2 to steer and keep a desired position on aroad piece 6. The distance d₁ between the image sensor 46 of imagingsystem 3 and steering axis 50 is important because it significantlyinfluences a vehicle's 2 capability to steer.

Initially it may seem that imaging system 3 should be located as closeas possible to steering axis 50 with the optimal position being atsteering point 52 between drive wheels 54 (as shown in FIGS. 13C-13D).This position is considered to be optimal because when vehicle 2 steers,it turns around steering point 52, which would not change the positionof imaging system 3, only its orientation. While this introduces awarping effect in how the markings are perceived, it keeps the imagingsensor 46 in the center of the road piece 6 and as far away from theedges of markings 12 as possible.

Unfortunately, vehicle 2 is subject to a certain amount of steeringnoise caused by limited control over motor behavior, slip, backlash,variable friction and other factors. By positioning imaging system 3forward from the steering axis (as shown in FIGS. 13A-13B), a smallsteering error will be amplified into a large effect perceived by theimaging sensor 46 in front of the steering axis 50, allowing themicrocontroller 40 to more quickly correct steering errors. This is thereverse of the position of imaging system 3 in FIGS. 13C-13D where anysteering error would not become visible to the imaging system 3 untilmuch later and vehicle 2 would have to react quicker to such error.

The optimal position for the imaging system 3 is a tradeoff that must beconsidered when designing the vehicle 2. If it is positioned too closeto the steering axis 50 then the problem mentioned above will occur. Onthe other hand, if it is positioned too far forward then tiny steeringerrors will result in large translations for the imaging system 3,possibly adding difficulty to the marking-parsing process. A compromisebetween the two extremes will allow the vehicle 2 to more easilymaintain its heading on a road piece while still enabling consistentparsing of road markings.

Given the size of the vehicles 2 envisioned herein, a large d₁ isdesirable, for example d₁=25 mm. This allows vehicles 2 to be designedwithout wheel encoders (sensors to measure angular position and velocityof the wheels) or similar sensors. Usually, sensors like wheel encodersare used to allow cars, robots etc. to steer precisely. Without suchsensors, the ability of controlling wheel speed is limited, which causeslarge steering errors. However, in the vehicle 2 design describedherein, the vehicle 2 compensates for such steering errors with a larged₁, catching a potential steering error early enough to compensate forsuch error.

As described herein, this causes the imaging system 3 to change positionwhen the vehicle steers, potentially missing parts of underlying roadmarkings. To account for this position change caused by steering errors,the road markings 12 are designed to be smaller than the imaging systemssensor area, leaving large enough margins on either side.

2.1.4 Motor Drive Unit:

With reference to FIGS. 14A and 14B and with continuing reference to allprevious Figs., in one embodiment, the motor drive unit 56 uses twomicro electric motors 58, one for each rear wheel 54, to enable vehicle2 to move in a desired direction. Motor drive unit 56 is known as adifferential drive system. By controlling the relative speed of eachmotor 58 (by controlling the voltage applied to the motor), vehicle 2can steer along arbitrary small curvatures. Microcontroller 40 generatesa PWM signal for each motor 58. Each signal is amplified by H-bridgemotor drivers (not shown) to output the necessary power for the motor58.

In another embodiment, the motor drive unit is a single micro electricmotor driving at least one rear wheel of the vehicle. Microcontroller 40generates a PWM signal that is amplified by a motor driver (not shown)to output the necessary power for said motor. In this embodiment, thefront wheels of the vehicle can both turn like a real vehicle, e.g.,Ackermann steering.

The imaging system 3 described above is also used to estimate a speed ofvehicle 2 and steering angle and therefore allows for closed loop speedand steering control. In addition, microcontroller 40 can use acounter-E.M.F. signal from one or both motors 58 to estimate the speedof vehicle 2 at a higher frequency without the need for wheel encoders,but with less accuracy than with the imaging system 3.

2.1.5 Secondary Input/Output:

Each vehicle 2 can also include a secondary input/output system whichincludes components which are not critical for the core operation of thevehicle 2 but which adds functionality to the vehicle 2 to allow formore realistic performance.

Each vehicle 2 includes a small battery 64 which powers the vehicle 2.The preferred battery type is Lithium Polymer, but other batterytechnologies can also be used provided the batteries are small. Thevehicle uses an A/D converter in series with a voltage divider to enablemicrocontroller 40 to measure the voltage of the battery. Thisinformation is forwarded to basestation 22, which then plansaccordingly. When battery 64 is at very low voltages, microcontroller 40can react immediately and stop the operation of vehicle 2 if necessary.Battery 64 is connected to the bottom of vehicle 2 to supplyoutside-accessible charging connectors 62, shown in FIG. 14B. Connectors62 are specially designed to not only allow easy recharge of thevehicle's battery, but also for the vehicle 2 to drive itself onto acharging station (not shown) without the help of a user. This isnecessary because the system can include charging stations, wherevehicles 2 can be recharged automatically without user intervention.Both the battery and the motors can be mounted in quick change slots toallow a user to change them without the necessity of tools, such as ascrewdriver.

Vehicle 2 includes LEDs representing the head-, turn-, and break-lights,and special lights in unique vehicles such as police cars or firetrucks.Operation of those lights is similar to the operation of lights in areal vehicle. Microcontroller 40 controls these lights based on commandsreceived from basestation 22 to show intended actions like turning left,braking, high beams, etc. The last part of the secondary input/outputsystem can be an audio speaker which allows vehicle 2 to generateacoustic signals like honking, motor sounds, yelling drivers, sirens,etc. under the control of basestation 22 via wireless network radio(radio transceiver) 42 and microcontroller 40.

2.2 Vehicle Control Software:

Microcontroller 40 on each vehicle 2 operates under the control ofvehicle control software to control the low level, real-time portion ofthe vehicle behavior, while the high level behaviors are controlled bybasestation 22. The vehicle software operates in real-time withsub-system execution occurring within fixed periods or time slots. Thismeans microcontroller 40 executes various tasks such as measuring speed,commanding motor voltage, steering, and checking for messages atdifferent intervals. Hardware timers on microcontroller 40 are usedensure that each task is executed as desired. For example, eachmicrocontroller 40 can take a scan using the imaging system atfrequencies between 500 Hz-1000 Hz, command new motor speeds atfrequencies between 250 Hz-500 Hz, check for new messages at 100 Hz andcheck the battery voltage every 10 seconds. Some tasks take longer thanothers to execute, but they all should execute within their allottedtime periods or slots. The vehicle software can be divided into thefollowing sub systems:

2.2.1 Communication:

Each vehicle 2, via its microcontroller 40 and wireless network radio42, communicates wirelessly via messages with basestation 22 (which alsoincludes a wireless transceiver) and reacts to messages sent bybasestation 22. Messages sent by basestation 22 can, for example, butwithout limitation, include a new desired speed, a new desiredacceleration, a lane switch command, request battery voltage, requestthe latest position information of the vehicle, turn on a turningsignal, output a sound, etc. Vehicle 2 can also send messages about itsown status without a request from basestation 22. This can happen when,for example, without limitation, the battery voltage is very low orvehicle 2 loses track of its position.

2.2.2 Marking Recognition/Interpretation:

The raw scans of markings 12 taken by imaging system 3 (where each pixelincludes a grayscale value in the range of 0 to 255) are parsed bymicrocontroller 40 into bit values so that piece and location IDs can becomputed. This happens through a series of steps shown in FIGS. 15A-15C.First, the raw scan (FIG. 15A) is rescaled so that the brightest pixel(FIG. 15B) has a value of 255. This reduces the impact from scan-to-scanvariations due to external conditions such as lighting, surface color,etc.

Next, any one or more of a number of techniques can be used to classifythe raw pixels of the scan into either black or white (FIG. 15C). Thesimplest technique involves using a threshold to decide theclassification of raw values. This works well when there are few barsper row and they are spaced relatively far apart as in this example. Ifthey are closer, however, the effects of blurring from the bar edgesmakes a simple threshold approach insufficient for handling the problem.In this case, computationally efficient machine learning approachestrained through hand-labeled scans can be used. Two such techniquesinclude support vector machines (SVMs) and decision trees. Bothtechniques classify a pixel into white or black using a variety offeatures computed for that pixel using its value and its neighbors'values. As shown in FIG. 16, a gradient-following approach used on theraw pixel values in each direction from the current pixel can be used togenerate features for this continuous set of pixels: the maximum andminimum values of the gradient, the magnitude of this range, where thecurrent pixel lies within that range, etc. SVMs create a linear decisionboundary within this feature space (non-linear extensions are possibleas well), while decision trees decide on the classification through aseries of single feature comparisons. In the gradient followingapproach, the gradient of pixel values in each direction is determined.In FIG. 16, the gradient is computed for the circled pixel. Thehighlighted (starred) set of pixel values can be used to generatefeatures that would allow the circle pixel to be classified as “white”.The pixel indices are shown along the x axis while the pixel intensitiesare shown along the y axis.

Once the scan is classified into white and black pixels, the resultinggroups of black pixels can be inspected with error-checking techniquesto correct for isolated errors and classified into the appropriated typeof bar using expected widths of pixels in order to identify thecenter-line 10 and encoded values in a marking 12 row.

2.2.3 Steering Control Algorithm:

Each vehicle 2 needs to be able to steer precisely and at high speeds tofollow a lane (e.g., without limitation, center-line 10) on a road piece6. Microcontroller 40 on vehicle 2 uses imaging system 3 to not onlyidentify markings from the road pieces 6, but also to compute theirhorizontal position within the field of view of the imaging sensor 46 ofimaging system 3 at a high frequency. Unless otherwise instructed bybasestation 22, microcontroller 40 is programmed to try to keep vehicle2 centered over center-line 10 as seen in an immediately preceding scanby imaging system 3. Microcontroller 40 will compute the position ofmarkings 12 relative to the center of vehicle 2, and if vehicle 2 is notcentered, will cause vehicle 2 to steer as needed to move the markings12 toward the center of vehicle 2. An Open/Closed Loop algorithm is usedby microcontroller 40 to achieve that goal.

The Closed Loop portion of this algorithm is a PID(Proportional-Integral-Derivative) control which computes the steeringangle for the current position error. The Open Loop portion of thisalgorithm uses prior knowledge embedded in markings 12 on road pieces 6to determine whether the vehicle 2 is about to traverse a straight roadpiece (FIG. 17A), left-curved road piece (FIGS. 17B-17C), orright-curved road piece 6. Microcontroller 40 then commands an open loopspeed to the motors 58 of vehicle 2 which will drive vehicle 2 on anapproximately correct trajectory which is in effect a first guess, orbias, at the appropriate steering commands for that section of roadpiece 6. The PID controller then works on top of the Open Loop controltrajectory to eliminate errors in real time. An example of this behavioris shown in FIGS. 17B-17C. Without the first guess, vehicle 2 tends todrive approximately straight. On a curved road piece 6, this causes alarge steering error 68 that the PID control corrects. Using a biasbased on prior knowledge (e.g., markings 12 and, thereby, whethervehicle 2 is currently on a straight, left or right curved road piece)significantly reduces the error the PID control needs to correct andtherefore makes microcontroller 40 steering of vehicle 2 more stable. Tocompute a good bias for different maneuvers, like a left or a rightturn, data from the driving behavior of vehicle 2 at different speeds,steering angles and across multiple vehicles is analyzed.

If instructed by basestation 22, microcontroller 40 can choose to notcenter vehicle 2 on road markings 12, but execute a completely freetrajectory. This is for example used when vehicle 2 switches from oneroad lane (e.g., center-line 10) to another.

This capability defines a difference between the present system andprior art toy slot cars or model railroad systems: namely, while priorart toy slot cars or model railroad systems are locked to a physicalslot or track and cannot leave it, the present system's vehicles 2 canfollow road markings 12 for some time, but can leave them at any timeand make frequent use of that capability.

2.2.4 Speed Control Algorithm:

Microcontroller 40 is also responsible for driving vehicle 2 at adesired speed. Microcontroller 40 utilizes an open loop/closed loopspeed control algorithm for speed control. The Open Loop speed controlpart commands an open loop speed to the motors 58 which will make thevehicle 2 drive at approximately the correct forward speed. The parsedroad markings 12 acquired by the vehicle imaging system 3 are used tomeasure the amount of time it took vehicle 2 to travel over knownlengths of the parsed road markings 12. This is converted bymicrocontroller 40 into the actual current forward speed of vehicle 2.Then, a closed loop (PID) speed control is used by the microcontroller40 to eliminate the difference between the desired/commanded speed andthe current speed of the vehicle 2.

As described above, forward speed estimation is performed by measuringthe length of time vehicle imaging system 3 of vehicle 2 sees a row ofmarkings 12. Since the length of each of these rows is known, themeasured length of time for which the bars comprising each marking 12are seen can be translated to an estimated speed of vehicle 2.

It is also desirable to measure lateral speed during lane changes toenable the speed of lane changes to be specified and controlled,allowing more accurate and diverse plans that involve both smooth andsharp lane change decisions through improved predictability of thevehicle's 2 motion. Also, this reduces the possibility of switching anincorrect number of lanes by always tracking the lateral distancetraveled so far. This allows planning of large actions across many lanesat once rather than making a series of small single-lane transitions dueto uncertainty concerns.

Rather than tracking the duration of a seen marking 12 as in theforward-motion case, lateral speed estimation works by tracking thelateral motion of the center-lines 10 of all markings 12 visible by thevehicle imaging system 3 throughout the lane transition. At every scanby the vehicle imaging system 3, the pixel positions of all visiblebars' center-lines 10 are computed and compared against the positionsfrom the previous scan. At a high enough scan frequency, these positionswill move a maximum of a few pixels between scans, allowingmicrocontroller 40 to accurately match bars from consecutive scans.Microcontroller 40 tracks the overall progress of a referencecenter-line 10 and switches to another center-line 10 which becomes thenew reference center-line 10 as soon as the current referencecenter-line 10 leaves the field of view, allowing uninterrupted lateraltracking throughout the entire motion.

By trading off between center-lines 10 as they pass through the field ofa view of vehicle imaging system 3, microcontroller 40 can estimate anoverall amount of horizontal translation in numbers of pixels from somestarting point, even when the total translation is much greater than thewidth of the vehicle imaging system's 3 field of view. Since thedistances between lanes are known, microcontroller 40 can execute a lanechange at a given lateral speed by adjusting the heading of vehicle 2 byminimizing the difference between a calculated/determined lateralprogress and a desired lateral progress at each point in time. Ifvehicle 2 is falling behind in its lateral progress, microcontroller 40can cause vehicle 2 to turn sharper to catch up and if vehicle 2 isshifting laterally too quickly, microcontroller 40 can cause vehicle 2to straighten its heading relative to the road piece 6 to slow down itslateral progress and reduce error.

This provides a high degree of accuracy in lateral speed control sinceat least one center-line 10 is visible in a majority of locations on theroad pieces (note that fully parsing the marking row is not necessaryfor this computation). In a minority of situations where no markings 12or center-lines 10 are visible, the current lateral motion can beestimated from the last-measured rate of lateral motion.

An example of this latter approach is shown in FIGS. 38A-38C over threepoints in time. Here, vehicle 2 initiates a lane switch to the left.Initially, as shown in FIG. 38A, the entire marking row is centered(shown by dashed line 142) in the vehicle imaging system's 3 visiblearea. Five bars are identified and microcontroller 40 decides to trackthe fourth bar *4*. As the vehicle 2 shifts to the left as shown in FIG.38B, bars begin to leave the visible area to the right. As the bar thatwas being tracked leaves the field of view, as shown in FIG. 38B,microcontroller 40 begins to track its progress using the first bar (barnumber *1*, in FIG. 38C) instead, allowing vehicle 2 to maintain anestimate of overall lateral motion progress since the start of the lanechange maneuver, even as bars enter and leave the field of view of thevehicle's imaging system 3. In FIG. 38C, the beginnings of anothermarking row to the left begin to appear, and will be used to trackmotion when the first marking row's bars are no longer visible.

Precise lateral motion execution through techniques such as this isnecessary to enable vehicle 2 to execute maneuvers such as the one shownin FIG. 39.

2.2.5 Motion Control Flow Algorithm:

A high level flow chart describing the control algorithm implemented bymicrocontroller 40 of each vehicle 2 is shown in FIG. 18.

The control algorithm includes both steering and speed control and allthe components necessary to gather the necessary information tocorrectly steer and move vehicle 2. Every cycle starts at step 82 bytaking a scan using imaging system 3. In step 84, this scan from step 82is analyzed and interpreted. If the scan is invalid, an error messagemay be sent to basestation 22 and vehicle 2 may use information frompast scans to drive until a valid scan is recognized by microcontroller40 or microcontroller 40 gets instructed otherwise by basestation 22. Ifthe scan is valid, meaning it includes successfully-parsed road markings12, in step 84, the next action for the vehicle is chosen based on thisscan and the current state of vehicle 2.

In step 84, if vehicle 2 determines that the scan is invalid or ifvehicle 2 cannot determine its next step, the algorithm advances to step85 wherein execution of the algorithm is stopped and vehicle 2 executesa stop, shutdown, pause, etc. In contrast, if vehicle 2 is in a lanefollowing mode, the algorithm advances to step 86 where microcontroller40 computes the center of the center-line 10 in the scan and uses it tocompute a new steering angle to center vehicle 2 over the road markings12. Doing this consecutively for a number of road markings 12 causes thevehicle 2 to follow a path described by those road markings 12. If, instep 84, it is determined that vehicle 2 is in open loop mode, thealgorithm advances to step 87 where microcontroller 40 executes anarbitrary trajectory commanded by basestation 22. Such trajectory caninclude lane changing, open loop turns, or anything else. As soon as theopen loop maneuver has been executed, the algorithm will repeat steps80-84 and enter into lane following mode by advancing to step 86. Asshown in FIG. 18, a message from basestation 22 in step 83 can affectthe mode vehicle 2 executes in step 84.

If, in step 86, microcontroller 40 determines that imaging system 3 hasnot identified center-line 10, the algorithm advances to step 88 wheremicrocontroller 40 transmits a warning to basestation 22 via wirelessnetwork radio 42. Basestation 22 responds to this warning bytransmitting steering control information to microcontroller 40 whichadvances to step 90 and executes steering control of vehicle 2 utilizingthis information from basestation 22. On the other hand, if in step 86,microcontroller 40 determines that center-line 10 has been found, thealgorithm advances to step 92 where a new steering angle is computed.The algorithm then advances to step 90 where microcontroller 40 executesthe new steering angle. Thus, in step 90, microcontroller 40 can act onsteering control information from basestation 22, or the steering angledetermined by microcontroller 40 in step 92.

From step 90, the algorithm advances to step 94 where a determination ismade whether imaging system 3 has reached the end of a marking 12. Ifnot, the algorithm returns to step 80 as shown. On the other hand, ifthe end of a marking 12 has been reached, the algorithm advances to step96 where microcontroller 40 executes the speed control algorithmdiscussed above.

The algorithm in FIG. 18 then advances to step 98 where microcontroller40 determines if the full code represented by a single marking 12 hasbeen seen. If not, the algorithm returns to step 80. On the other hand,if a full code represented by a single set of markings 12 has been seen,the algorithm advances to step 100 where microcontroller 40 sends thecode (the location ID, the piece ID, or both) to basestation 22.Thereafter, the algorithm returns to step 80 as shown.

Depending on the last marking(s) 12 seen, microcontroller 40 can makehigher level decisions. For example, after detecting a series ofmarkings 12 describing a unique location on a road piece 6 of thedrivable surface, microcontroller 40 can send this location informationback to the basestation 22 to allow it to track the position of vehicle2. Another example is determining from the markings 12 whether a roadpiece 6 is straight, or turns left or right, allowing vehicle 2 to steerto account for the expected road curvature without specifically havingto communicate with basestation 22.

2.2.6 Secondary Control Software:

The vehicle control software can also manage several secondary tasks.For example, it can monitor the battery voltage of vehicle 2 and decideswhether it is too low and notify basestation 22 or shut down operationof vehicle 2 in extreme cases.

The vehicle control software also includes a light module that controlsthe vehicle's LED headlights, turn signals and brake lights. Thebrightness of all LEDs is controlled by PWM (Pulse Width Modulation).The light module is an example of software with multiple control levels.In most cases, basestation 22 will interact with the light module like adriver using the light control in a real car. Basestation 22 can chooseto use turn signals when turning, choose to turn on/off lights or highbeams, while functions like brake lights work automatically whenevervehicle 2 slows down quickly (braking). Basestation 22 can also oralternatively take direct control over single lights and determine theirstate, like brightness, blinking frequency etc. This is not a realisticbehavior, but is useful to suggest special messages to the user, forexample when batteries are very low, the vehicle software is rebooting,during software updates, etc.

The vehicle software also includes a sound module that causes a PWMsignal to be output to a speaker. The sound module can modulate variousfrequencies on top of each other to generate sounds ranging from simplebeeping to realistic voices.

The vehicle software can also include a state module that keeps track ofthe last state of vehicle 2 and remembers the state even if vehicle 2 isturned off. This allows each vehicle 2 to maintain data and parameterslike maximum speed, sound (such as honking or sirens), its uniqueidentifier (such as a license plate), etc. without requiring changes tothe vehicle software.

A bootloader can allow for wireless software updates to each vehicle 2.Basestation 22 can initiate a software update and transmit the newsoftware to a specific vehicle 2 or to all vehicles 2 simultaneously.

3 Non-Vehicle Agents:

Non-vehicle agents can also exist in the system. These can include,without limitation, stop lights 8, railroad track crossings, drawbridges, building garages, etc. Each of these non-vehicle agents canshare the same general operating and communications structure as thevehicles: namely, each non-vehicle agent can have a microcontrolleroperating under the control of software to execute logic and behaviors,and act as another node in the system's network. This allows eachnon-vehicle agent to be represented and reasoned about withinbasestation 22 as with all other vehicles 2 and agents.

4 Basestation:

With reference to FIG. 19, basestation 22 operates under the control ofsoftware to manage all high-level behaviors of the system. It maintainsa virtual representation of the current system state, which basestation22 updates according to a plan, e.g., without limitation regularly orperiodically, as well as the state and intentions of each vehicle 2 andnon-vehicle agent in the system. Additionally, it interprets commandsfrom each user and relays these commands to the physical vehicle underthe control of the user and/or other agents in the system. It also actsas a communication backbone coordinating all communications in thesystem: wireless to mobile agents like vehicles, wired to static agentslike road pieces 6, traffic lights 8, etc. and also to an optional hostPC (for example via USB). The role of basestation 22 within the systemis shown in FIG. 19.

4.1 Hardware:

Next the core components of basestation 22 will now be described.

4.1.1 Embedded Computer:

Basestation 22 includes an embedded computer (controller) that hosts themain software including, without limitation AI software, communicationssoftware, etc. Desirably, the computer is a small embedded system, forexample an Intel Atom, ARM9, etc., with enough memory and clock speed tohandle the algorithms within the software and to scale to a reasonablylarge number of vehicles 2 and other agents. The computer may also hosta real-time/near real-time operating system like embedded Linux, XWorks,QNX, uLinux or similar. The foregoing description, however, is not to beconstrued as limiting the invention since it is envisioned thatbasestation 22 can be implemented by any suitable and/or desirablecombination of hardware, operating system, and software now known in theart (e.g., without limitation, a game console) or hereinafter developedthat is/are capable of implementing the functions of basestation 22described herein.

Like each vehicle 2, basestation 22 hosts a wireless module/transceiver100 (for example ZigBee, Bluetooth, WiFi, SimpliciTI, or similar) toallow communication with each vehicle and/or agent, e.g., via thewireless network radio 42 of vehicle 2. The only difference is thatbasestation 22 is the communication coordinator, while vehicles 2 arethe end devices.

4.1.2 User Interface:

Basestation 22 may have a simple user interface 102 that includesbuttons and switches (not shown) for user input and LEDs and,optionally, an LCD screen (not shown) for feedback to the user. Userinterface 102 enables the user to control high-level functions. Forexample, if vehicle-based exploration is being utilized to detect thedrivable surface, user interface 102 enables the user to causebasestation 22 to initialize this exploration. Another example would bea general start-stop interface to initialize or terminate operation.

4.1.3 PC Connection:

It is possible to connect basestation 22 to a PC or laptop 106 via a PCconnection 104, such as a USB. In this case, the user can have morecontrol over functions of the system as well as improved user feedback,for example, via a RoadViz visualization application described herein.Via the software on PC 106, the user can adjust various parameters ofthe system, such as, without limitation maximum vehicle speed, vehiclebehaviors, drivable surface behaviors, etc.

4.2 Software:

4.2.1 Visualization Tool:

Basestation 22 communicates with a RoadViz visualization applicationthat can run on PC 106 using a network interface (e.g., protocol TCP/IPor UDP/IP). Basestation 22 sends messages to the RoadViz visualizationapplication that update the system state, such as, without limitation,the structure of the drivable surface and the vehicle positions andplans. The communications protocol described later herein details someexample messages that are passed between basestation 22 and the RoadVizvisualization application running on PC 106.

4.2.2 Vehicles and Agents:

Basestation 22 communicates with vehicles 2 and other agents using awireless network (such as Zigbee or Bluetooth) or a wired network in thecase of static agents, e.g., traffic light 8, connected to road pieces6. Desirably, the wireless module/transceiver 100 is connected tobasestation 22 using a standard RS-232 serial interface. An attention(AT) command set is used to send/receive messages to/from specificvehicles 2 and agents.

When a new vehicle 2 or agent is introduced to the system, it mustregister with basestation 22 so it can be modeled within the system andcontrolled. When the new vehicle 2 or agent is started, it will send amessage to basestation 22. Basestation 22 can also send a broadcastmessage to the entire network to query all present vehicles 2 and agents(for example, during initialization). Desirably, a specialidentification system is used so that multiple basestations 22 can beused in proximity to each other, and vehicles 2 must choose to registerwith a specific Basestation 22. In any event, each vehicle 2 is a uniquenode in the communications network that has a unique address that allowsbasestation 22 to uniquely communicate with the vehicle 2.

4.2.3 Messaging Library:

Basestation 22 includes a software module that facilitates communicationwith vehicles 2 and other agents via wireless transceiver 100 andmanages message processing and delivery. This software module hasseveral components. The first component, serialComms, is used to readand write data to/from a serial port of basestation 22. This moduleprovides functions that abstract the specific transport layer ofcommunications. The second component, carComms, is used by basestation22 to formulate and send messages to vehicles 2 and other agents. Themodule will also keep a message mailbox for each vehicle 2 and agent,and will process incoming messages and deliver them to the appropriatemailbox. The third component, carMessages, is used to instantiate thespecific messages. These components provide basic storage andserialization capability. The carComms module will instantiate a messageusing carMessages, and then send it using the serialComms component.

4.2.4 Artificial Intelligence Algorithm:

All interactions and high-level behaviors of the system are governed bythe algorithms expected by basestation 22. This includes where vehicles2 want to drive, how they plan to get there, how they interact withother vehicles 2 on the drivable surface, whether they follow trafficrules, etc. Basestation 22 can control both physical and simulatedagents. The only difference is that the objects in the systemrepresenting physical agents (e.g., vehicles 2 and agents, such astraffic signal 8), send and receive real messages, while simulatedagents interact with a software layer that simulates the responses andlocation updates from a physical agent. Both appear identical tobasestation 22, allowing complex hybrid simulations with combinations ofreal and simulated agents.

Desirably, while each vehicle 2 executes all behaviors, it only directlycontrols low-level behaviors such as speed control, maintaining headingswithin a lane, and transitioning laterally to adjacent lanes. Allhigher-level planning described is computed entirely within basestation22 and relayed to vehicle 2 which executes these plans through a seriesof simpler behaviors.

Much of the behavior in the system is driven by randomness (vehicledestinations, some behaviors, etc.). Desirably, basestation 22 is ableto reproduce behavior in a fully simulated system of agents by using adeterministic random number generator that runs off of a seed value.This seed value can be initialized to produce random behavior (from thesystem clock for example) or to a previously used seed value toperfectly replicate the behavior of the system during that run in orderto investigate any problems that arose.

4.2.4.1 Road Piece Network Representation:

Before initiating normal operation, basestation 22 must have arepresentation of the drivable surface that is being used. This caneither be read in from a file accessible to basestation 22 or determinedby basestation 22 at run-time using one of the methods described above.

With reference to FIG. 20, a virtual representation of the drivablesurface is represented within basestation 22 as a directed graph that isused for planning purposes by all other vehicles 2 and/or agents in thesystem. The edges on this graph are known as drivable sections. Drivablesections are directed segments of a road piece that can be driven by avehicle, and the nodes are points where one drivable section ends andone or more other drivable sections begin. For example, on a four-wayintersection road piece, each entry to the intersection is a drivablesection which then branches into four other drivable sections that leadto each possible intersection exit (right, straight, left, U-turn).These drivable sections represent higher-level flows of traffic, so evenif there are multiple lanes on a road piece, all the lanes in eachdirection of traffic would be represented by one drivable section. Alarger example of a drivable surface is shown in FIG. 21.

Along with a representation of the system state (such as drivablesurface structure), each vehicle 2 and each static agent (such astraffic light 8) is represented in the virtual representation as anobject that includes all information relevant to that agent. Atspecified frequencies, each vehicle 2 and/or static agent is presentedby basestation 22 with the relevant information regarding the state ofthe rest of the system and told to update basestation 22 with its state,in effect making a decision concerning its behavior for the next timestep (time period). This structure allows the processing for vehicles 2and/or static agents to be parallelized across multiple threads, ifdesired.

4.2.4.2 Global Planning Algorithm:

A global planning algorithm is the core of basestation 22. All vehiclebehavior is handled by modules that are called the global planner andthe local planner. The global planner is responsible for high-level,long-term decisions such as determining the series of drivable roadpieces 6 that need to be traversed in order to reach some destination inthe drivable surface. For example, it might determine that the mostefficient way for vehicle 2 to get from one point to another would be totake a U-turn followed by a left turn at the next intersection. Theglobal planner abstracts away all local complexity such as lanechanging, signaling, speed control and interactions with other vehiclesand only considers the problem at the global scale.

While in many path planning applications a grid might be used to searchfor paths (where each square is connected to all its neighbors,representing possible motions), the present system has additionalstructure in the form of drivable sections (road pieces 6) that it cantake advantage of to perform effective planning at a higher level. Theglobal planner computes global paths by operating on the directed graphstructure described earlier. Each edge in the graph includes a cost fortraversing that drivable section. That cost is a function of variousparameters such as length, maximum speed, number of lanes, and thepresence of stop signs and lights, and could be customized for each suchagent depending on their priorities. The global planner uses thisweighted, directed graph to compute optimal paths using a graph searchalgorithm such as the A* or Dijkstra's algorithm.

The difference between A* and Dijkstra's algorithm is that A* uses aheuristic function that estimates the total cost from any state to thegoal to guide the direction of the search. Since a reasonable estimatecan be made for this cost from any state, A* is more desirable for thisapplication. The A* algorithm traverses various paths from start to goaland for each node x, it maintains three values:

g(x): the smallest path cost found from the start node to node x;

h(x): the heuristic cost from node x to the goal; and

f(x)=g(x)+h(x)=the estimated cost of the cheapest solution through nodex;

Starting with the initial node, A* maintains a priority queue of nodesto be explored, known as the open set, sorted in order of increasingvalue of f(x). At each step, the node with the lowest f(x) value isremoved from the queue to be evaluated (since the goal is to find thecheapest solution), the g and f values of its neighbors are updated toreflect the new information found, and those neighbors are added to theopen set if they had not been previously evaluated or if their f valueshave decreased from previous evaluation, representing a possibility of abetter path through that node. In effect, the A* algorithm searches inthe direction which appears to be best, often resulting in the optimalpath with a much smaller amount of work compared to a brute-forcesearch.

A heuristic is considered admissible if it is guaranteed not tooverestimate the true cost to the goal. In such a two-dimensional pathplanning example, if the cost of a path were equal to the distance, thesimplest admissible heuristic is the straight-line distance to the goal.With an admissible heuristic, once a path to the goal is found whosecost is lower than the best f(x) on the priority queue, it is guaranteedto be the optimal, lowest-cost path. Dijkstra's algorithm is equivalentto a special case of A* where h(x)=0 for all states.

For a simple example of A* search, see FIGS. 22A-25. Here, the goal isto find the lowest cost path from node A to node D where the cost of anedge is simply its distance and the heuristic function h is thestraight-line distance to the goal node.

With reference to FIG. 22A, a start node A is inserted into the open setwith optimistic total cost estimate of “8”. In FIG. 22B, node A isremoved from the priority queue and the cost of A's neighbors, B and F,are updated and those nodes are added to the open set. Each node'spriority value on the open set is equal to its value of (f), the sum ofthe best path from node A to that node (g), plus the heuristic cost fromthat node to the goal (h).

In FIG. 23A, the lowest-estimate node in the open set is removed fromthe priority queue, the cost of B's neighbor C is updated, and C isadded to the open set. In FIG. 23B, node C is removed from the priorityqueue and its neighbor node G is added to the open set.

In FIG. 24A, node F, the lowest-cost node on the open set, is removedfrom the priority queue and its neighbor E is added to the open listwith its newly computed value for (f). In FIG. 24B, node E is removedfrom the priority queue and its neighbor node D is added to the openlist.

In FIG. 25, the goal node, node D, is removed from the open set. Thetotal cost of the best found path at this path is 12, i.e., the pathcomprising nodes A, F, E, and D. Node G is still in the open set. Ifnode G has a value of (f) that is less than the current best path cost,namely 12, searching would continue as there is still a potential for abetter path to the goal than the one already found. However, since theoptimistic path of the path from node A to node D via node G has a valueof (f) of 15, which is greater than 12, it is known that the optimalpath has been found and the search is finished. In FIG. 25, the optimalpath is shown as a series of thick arrows.

A* can easily be extended to search to a set of goal nodes rather than asingle goal node by adjusting the heuristic function to estimate theoptimistic cost to any goal node. Also, while the example of FIGS.22A-25 shows a search over a relatively small graph with limited nodesand only two dimensions (2-dimensional coordinates), A* is often usedfor much higher-dimensional search problems where additional dimensionscan represent additional aspects of the vehicle state such as speed andtime. This allows planning with more realistic motions and accountingfor moving obstacles. These extensions can be taken advantage of duringlocal planning, described next.

4.2.4.3 Local Planning Algorithm:

Basestation 22 includes a local planning algorithm that executes thesteps that enable vehicles 2 to execute a global plan. This includesspeed control, distance keeping with other vehicles, lane changingdecisions, behaviors at intersections, and signaling. For realism andscalability, decisions for vehicles 2 are made using only localknowledge rather than with full knowledge of the system to mirrorreal-world logic and allow the complexity of the system to scale withmany vehicles 2 in a tractable way. For example, an object representinga vehicle 2 has full knowledge of its own state and plan but cannot useother vehicles' 2 plans in making its decision. It only has access toaspects of the system state that would be visible in the respectivereal-world scenario (locations and speeds of nearby vehicles 2, thestate of traffic lights 8, etc.).

4.2.4.3.1 Intersection Behavior:

With reference to FIG. 26, for more effective structure andcomputational efficiency, each intersection 108 is also represented asan object within basestation 22 that tracks its own state and thestate(s) of vehicle(s) 2 currently interacting with it. Each timebasestation 22 updates the state of objects in the system, theintersection 108 object identifies which of its entry points 110 (shownby dashed boxes in FIG. 26) are occupied by vehicles 2. The intersectionobject tracks the time when each vehicle 2 entered each of theintersection's entry points 110 and determines when it is a vehicle's 2turn to advance. For example, at a four-way stop sign, a vehicle 2 maybe identified as able to advance if it has the earliest arrival of allvehicles 2 at the intersection 108, the intersection interior is clearof other vehicles 2 and it has been static for some minimum amount oftime. At intersections that have traffic lights 8 or stop signs on onlya subset of its entry points, the current motions of relevant vehicles 2can be considered in determining clearance to proceed. When a vehicle 2is at an intersection 108 and wants to advance, it will only do so ifthe intersection object determines it is proper to advance.

4.2.4.3.2 Speed Control:

The speed-related high-level computations by basestation 22 desirablyassume a fixed acceleration and, therefore, use the simple modelillustrated in FIG. 27.

Here a vehicle changes from an initial velocity V_(i) to a finalvelocity V_(f) over time t with an acceleration of a. The distance, d,over which this speed change will take place can be determined byintegrating the area under this function as follows:

$d = {{\int{V{t}}} = {{t*{\min \left( {V_{i},V_{f}} \right)}} + \frac{t*{{V_{i} - V_{f}}}}{2}}}$$t = \frac{{V_{i} - V_{f}}}{a}$

There are numerous scenarios when a variable needs to be computed andother variables are known. For example, if it is desired to stop from aninitial velocity V_(i) over time t, an acceleration of

$a = \frac{V_{i}}{d}$

is required.

With reference to FIG. 28, a more complex problem is for a vehicle V₂ tomaintain a safe distance behind a vehicle V₁ ahead of it. Trailingvehicle V₂ accomplishes this by trying to match the speed of leadingvehicle V₁ at a follow distance of D_(space) which is a safe followdistance that is a function of factors such as the road speed limit andthe speed of the leading vehicle, V₁. Vehicle V₁'s motion is simulatedforward for time t, assuming it keeps its original speed. Vehicle V₂must, therefore, compute the acceleration a that allows it to transitionfrom its original speed V_(i) to a final speed V_(f) over a distance oftravelDist:

${travelDist} = {t*\left( {V_{f} + \frac{{V_{i} - V_{f}}}{2}} \right)}$${travelDist} = {\frac{{V_{i} - V_{f}}}{a}*\left( {V_{f} + \frac{{V_{i} - V_{f}}}{2}} \right)}$$a = {\frac{{V_{i} - V_{f}}}{travelDist}*\left( {V_{f} + \frac{{V_{i} - V_{f}}}{2}} \right)}$

When this is executed at a relatively high frequency for each vehicle 2,basestation 22 is able to achieve smooth and realistic distance keepingin complex traffic systems through this computationally efficient anddecentralized approach.

The same computation can be used to achieve a speed change such asstopping at a specific location: the vehicle 2 can compute theacceleration a that allows it to transition from its original speedV_(i) to a final speed V_(f)=0 over a remaining distance. However, dueto communication delays, uncertainty of positioning and unpredictablespeed changes due to traffic and other conditions, speed change commandswithin basestation 22 and vehicles 2 are specified relative to absolutelocations identified by position markings 12 rather than commanded forimmediate execution. For example, to stop at a stop sign or the end of apath, a vehicle 2 would be sent a command by basestation 22 to achieve aspeed of 0 with a certain deceleration at an offset from some locationmarkings 12 encountered earlier. Having an absolute location to trackits position from, as vehicle 2 approaches the desired stopping pointvehicle 2 will continually recompute travelDist, the distance requiredto achieve the target velocity at the specified acceleration, and willbegin executing the speed change when travelDist is equal to theremaining distance to the destination. In this way vehicle 2 is able toexecute a realistic stop at stop signs regardless of the trafficconditions in which it is driving.

4.2.4.3.3 Full Local Planning with Lane Changing:

The full local planning algorithm implemented by basestation 22, thatincludes speed and lane changing decisions, can be treated as amulti-dimensional planning problem rather than planning in atwo-dimensional, position-based search space, as in the case of theglobal planning algorithm. One desirable approach used by basestation 22is to treat this problem as a planning problem in four dimensions:

-   -   Lane: The lane position on a road piece 6. This is desirably an        integer number having a value that is small for the street        version of the system (since lanes are spaced apart) and        desirably in the low double digits for the racing version of the        system since lanes are more numerous and tightly spaced        representing more continuous possible lateral positions.    -   Forward distance: The forward distance from a starting location        until some planning horizon. This can be discretized at some        relevant resolution, for example, by road marking 12 locations.    -   Speed: The speed of the vehicle. Initial speed is the current        vehicle speed which can change at some specified rate.    -   Time: Time starting at 0, the current instant in time. This is        important since there are other moving vehicles 2 on the        drivable surface that change positions and must be accounted        for.

These dimensions form the search space where a point in this spacecorresponds to a state, i.e., some value for each of the dimensionsmentioned above. Each point in this space connects to other points inthis space representing states that are reachable from the state aftersome action. For example, a point in this space may have a connection toanother point representing adjacent lanes forward in distance and timerelative to its speed, but not to points representing lanes far away ortimes in the past (since these transitions are not possible). So ineffect, this forms a graph search problem as with the global planningalgorithm, except that the search space and branching factor aresignificantly larger. In fact, while there are a large number ofpossible states based on these four dimensions, only a relatively smallsubset of them are relevant for the search problem. The planninghorizon, or how far into the future distance basestation 22 computesplans, is defined by the maximum value for the forward distancedimension under consideration. This is a trade-off between computationalcomplexity (since a larger forward distance increases the size of thegraph to be searched) and plan effectiveness (the need to plansufficiently far into the future to generate intelligent plans).

One assumption to make for short planning windows concerning the pathsof other vehicles 2 is that these other vehicles 2 will maintain theircurrent speed and lane unless they are signaling otherwise. It is alsopossible to incorporate uncertainty about the motions of other vehicles2 by penalizing states that have some potential to be affected by thosevehicles 2. While the local plan is computed by basestation 22 farenough into the future to identify sophisticated behaviors, the localplan will be recomputed frequently, allowing basestation 22 to react toany deviations from the assumed behavior of vehicles 2.

Basestation 22 solves this multi-dimensional planning problem byplanning from the starting point in this space to any point at theplanning horizon (all nodes with the specified forward distancedimension value are considered goal states) subject to some optimizationfunction. Such a function could, for example, penalize lane or speedchanges and closer encounters with moving obstacles, and reward higherspeeds, progress towards a goal or being positioned in a specific laneif a turn is planned in the future. The function being optimizedcaptures the current goal of the vehicle 2, and the goal of basestation22 is to find a series of allowable actions through this highdimensional space that optimizes the value accrued from this function.

As mentioned previously, while this multi-dimensional state space can belarge and difficult to fully represent in a memory of basestation 22,the entire space does not need to be represented since most states willnever be considered. One desirable, non-limiting, implementation canallocate space for new states only as they are considered, reducing thememory requirement to only the relevant fraction of the full statespace.

Basestation 22 can use optimal algorithms, such as A* or Dijkstra's, orcan utilize sampling based probabilistic approaches such asRapidly-Exploring Random Trees (RRTs) biased towards the planninghorizon since plans do not need to be optimal and the search space maybe too large. In such approaches, the aspects of the state space nolonger need to be discretized at a specific resolution since samplingtechniques can operate on arbitrary locations in the state space.

Another option is to utilize a special version of A* called AnytimeRepairing A* (ARA*).ARA* has the property that it will first quicklyfind a sub-optimal solution to the planning problem and will spend theremaining time iteratively improving it as time permits. ARA*accomplishes this by repeatedly calling the normal A* algorithm butmultiplying the values returned by the heuristic function by someconstant ε>1. This new heuristic is no longer admissible (since it mayoverestimate the true cost to the goal from any state), but it reducesthe search time significantly since fewer states will appear to have apossibility of contributing to the path. Even though the final solutionwill no longer be optimal, it is guaranteed to have a cost at most εtimes larger than the true optimal cost and in practice is often muchcloser to the optimal. By gradually reducing ε and intelligently reusingmuch of previous iterations' computations, ARA* has the desirableproperty that a reasonable solution, often close to the optimal, willalways be available within the fixed time that the algorithm has tooperate. This allows basestation 22 to compute high-quality plans whileguaranteeing that its required update frequencies will be met.

To better understand the purpose of this local planning by basestation22 and the types of plans that may be found by such an approach,consider the example plan shown in FIGS. 29-33. Here the vehicle 2 withthe star next to it has a high importance on reaching its destination asquickly as possible but finds itself pinned in the right lane by severalother vehicles 2 going at a moderate speed. A naïve plan would be tostay in the current lane and keep as short of a distance as possible tothe vehicle 2 in front of it as that is the instantaneously optimalbehavior. Given the objective function for this vehicle 2 with the starnext to it, however, local planning by basestation 22 is able to find aseries of actions and resulting states that allow said vehicle 2 toescape from the right lane by first slowing down (as shown by arrow 112in FIG. 29) to let the other vehicles 2 pass and then shifting throughthe opening to the left lane that is unoccupied, as shown by arrows 114,116, and 118 in FIGS. 30-32, respectively. While FIGS. 29-32 only showan example sequence of selected states, each state branches into manyother states that were not chosen. FIG. 33 shows a sampling of suchfuture states that are possible from the state depicted in FIG. 31 byvarying the vehicle's speed or lane. A good heuristic to guide thesearch can overcome such large branching factors while still findingacceptable plans for a sufficient planning horizon by first exploringthe options that are most likely to have good outcomes.

4.2.4.3.4 Other Logic:

Additional logic within basestation 22 controls behaviors such as logicfor traffic light 8 signaling and execution of sounds. Intended behavioris communicated by basestation 22 via messages to the physical agentsfor execution.

4.2.5 Basestation Software Summary:

A flow diagram explaining possible logic in basestation 22 at a highlevel is shown in FIG. 34. Knowledge of the drivable surface is firstinitialized 120, followed by identification 122 of all vehicles 2 in thenetwork. Next begins the main basestation loop 124 that first checks forany incoming messages, processes them for each vehicle, and updates thevehicles' states such as their speeds and positions in the network.After any user input from connected remote controls or computers isprocessed at 126, the system checks on the state of the current globalplan 128 for each vehicle 2. If it has been completed, a new one may becomputed as necessary. Following the global plan update 128 is a localplan update 130 for each vehicle 2. This includes logic that governslane changing, distance keeping, intersection logic, speed changes,signaling updates, etc. Once all planning updates have been made,necessary updates are sent to each vehicle in the network as well as theroad visualization tool if one is available.

5 User Interface:

Vehicles 2 can be controlled by basestation 22 or by a user, forexample, via a remote control 132. A user's main interaction tools withthe system is a remote control 132, a PC 106 connected to basestation22, or both a remote control 132 and a PC 106.

5.1 Remote Control:

Each remote control 132 includes a wireless transceiver (not shown)which is part of the system's wireless network. As with vehicles 2,there can be many remote controls 132 interacting with the basestation22 and vehicles 2 simultaneously. In the most common case, each remotecontrol 132 is used by a user to control a specific vehicle 2. Whatvehicle 2 is being controlled can be changed at any time by the user.When the user switches control away from one vehicle 2, basestation 22resumes full control over that vehicle 2. All vehicles 2 not controlledby a remote control 132 are automatically controlled by basestation 22.Compared to common remote controlled toy cars, the remote controls 132described herein offer a higher level of interaction. The steeringitself is desirably performed by the vehicle 2 and not by the user,since vehicles 2 can move quickly and the roads can be narrow. A usercan instead provide higher level commands to a vehicle 2 in the form ofspeed adjustments, deciding to switch lanes, deciding where to turn atintersections, initiate U-turns, pass other vehicles 2, etc. Also, auser can have control over secondary vehicle functions like turningsignals, lights, honking, etc.

FIGS. 35A-35B show an exemplary design of a remote control 132. Thefront middle (select) button allows a user to cycle between vehicles.

In addition to controlling vehicles, remote controls 132 can also beused to control stationary agents, such as the special components: trapson road pieces, traffic lights 8, road barriers, garage doors, etc.FIGS. 36A-36B show an example of a stationary agent, namely, a trap 134on a road piece 6 that is used in a racing mode. In this case, trap 134is assigned by basestation 22 to the first vehicle 2 which drives over ahexagon 136. The driver then has control over trap 134 and can arm it atany time using remote control 132. In this case, trap 134 will elevate awall 138 mounted in the road piece 6 to block the way for followingvehicles 2 for a certain amount of time. Purely virtual traps are alsopossible. For example, when a vehicle 2 drives over a certain part ofthe road, it may only be able to drive at half of its maximum speed forsome time. There are a large number of real and virtual traps 134 whichcan be designed in a similar way and can be armed and controlled both byusers with remote controls 132 as well as by basestation 22.

5.2 PC Control:

The controls described above in connection with remote control 132 canalso or alternatively be replicated through PC 106 using a keyboard, amouse and/or an attached gamepad. Additionally, this allows thepossibility of an operator commanding a vehicle over the internet usinga visualization of the system state.

6 Visualization Software:

With reference to FIG. 37, desirably the RoadViz visualizationapplication is provided on PC 106 that can visualize the system state inbasestation 22 and cause basestation 22 to display the system state on avisual display 140 connected, for example, to PC 106, shown in FIG. 19.The system state includes all the information necessary to visualize andmanage the system and its agents. This includes items such as roadpieces 6 and their locations, vehicle 2 positions and velocities, andthe state of static agents (e.g., whether a traffic light 8 is green,yellow, red). The visualization application can monitor thebasestation's 22 understanding of the system and is useful for runningtest simulations of the software modules.

6.1 Components:

6.1.1 Graphics Engine:

Desirably, the visualization application uses a 3D graphics engine. Oneimplementation can be built using C# and the Microsoft XNA platform. Viathe visualization application, the user can control a virtual camera toview the network at a desired location. An example screenshot on visualdisplay 140 is shown in FIG. 37.

6.1.2 Software Structure:

The visualization application desirably uses several threads todistribute its computational load. One application thread is dedicatedto rendering the graphics, and another thread is for networkcommunications with basestation 22.

6.1.3 Communications:

The visualization application desirably uses a network socketcommunications (such as TCP/IP) and acts as a server. Basestation 22 (orsimilar) agent can connect to the visualization application running onPC 106 (FIG. 19) as a client. When the visualization applicationreceives a connection request, it spawns a thread to process the networkcommunications for that client. Multiple clients can connectsimultaneously.

Basestation 22 can then send and receive messages via the visualizationapplication. Some exemplary messages are discussed hereinafter.

6.2 Debugging Abilities:

The visualization application is useful for debugging basestation 22.The visualization application receives system state information and canrequest or send information back to basestation 22. The visualizationapplication desirably includes a menu system from which a user can viewthe drivable surface or send/receive this specific information.

7 Communications Protocol:

Next, the communication protocol between various components of thesystem will be described with reference to a sampling of the variousmessages that can be used the system.

7.1 Basestation—Visualization Application Tool:

7.1.1 Message Descriptions:

CLEAR_MAP—resets the state of the visualization application and removesall road pieces, vehicles, etc.;

DISPLAY_ROAD_PIECE—commands the visualization application to display aparticular type of road piece at a particular location;

CREATE_CAR—commands the visualization application to display aparticular type of vehicle at a particular location;

SET_CAR_POSE—commands the visualization application to update theposition and orientation of a vehicle;

DISPLAY_PATH_PLAN—commands the visualization application to display theplanned path of a vehicle;

SET_STATE—changes the state of a variable in the basestation asrequested by the visualization application user;

REQUEST_STATE—requests information from the basestation to be displayedby the visualization application on visual display 140.

7.2 Basestation—Agents (Vehicles, etc.):

7.2.1 Message Descriptions:

CMD_LIGHTS—basestation 22 instructs a vehicle to set its lights on, off,blinking;

CMD_LINARRAY_DATA_REQUEST—basestation 22 instructs a vehicle 2 to senddata from a linear array scan by imaging system 3;

CMD_LINARRAY_DATA_RESPONSE—vehicle 2 sends the linear array scan data tobasestation 22;

CMD_SCANLED—basestation 22 instructs vehicle 2 to turn its scan LED 44on/off;

CMD_SET_EXPOSURE—basestation 22 instructs vehicle 2 to set the exposuretime of the linear array of imaging system 3;

CMD_BATTERY_VOLTAGE_REQUEST—basestation 22 requests a vehicle's batteryvoltage;

CMD_BATTERY_VOLTAGE_RESPONSE—vehicle 22 sends its battery voltage tobasestation 22;

CMD_SHIFT_LANE—basestation 22 instructs a vehicle 2 to shift to anotherlane;

CMD_SET_SPEED—basestation 22 instructs a vehicle 2 to achieve a certainspeed;

CMD_PING_REQUEST—basestation 22 sends a vehicle 2 (or all vehicles) torespond with an “alive” (ping) notice;

CMD_PING_RESPONSE—vehicle 2 sends an “alive” (ping) response to thebasestation 22;

CMD_POSE_REQUEST—basestation 22 requests the pose information from thevehicle 2 at a particular frequency;

CMD_POSE_UPDATE—vehicle 2 sends its pose information to the basestation;

CMD_BRANCH—basestation tells vehicle to follow a branch through anintersection (left, right, straight).

7.2.2 Typical Usage:

Next, a full sequence of messages that are passed between a vehicle 2and basestation 22 during a complex driving maneuver will be described.The maneuver involves a vehicle 2 reporting its pose (where “pose” meansa vehicle's position x, y and heading theta) during normal driving,changing lanes from left to right, stopping at an intersection, and thenmaking a right turn and resuming normal driving on a new drivablesection. It is important to notice that vehicle 2 doesn't actually haveto send the full pose information to the basestation, but just parsedscans of marking 12 by vehicle imaging system 3, which basestation 22uses to derive vehicle's 2 pose. This greatly reduces the need forcomputational power on the vehicle 2.

Elapsed Time (seconds) Message Direction Message Description 0Basestation → Vehicle CMD_POSE_REQUEST: Normal driving (1 secondupdates) 1 Basestation ← Vehicle CMD_POSE_UPDATE: send positioninformation 2 Basestation ← Vehicle CMD_POSE_UPDATE 3 Basestation ←Vehicle CMD_POSE_UPDATE 4 Basestation ← Vehicle CMD_POSE_UPDATE 5Basestation ← Vehicle CMD_POSE_UPDATE 6 Basestation ← VehicleCMD_POSE_UPDATE 7 Basestation → Vehicle CMD_SHIFT_LANES: tell car tomove to right lane 8 Basestation ← Vehicle CMD_POSE_UPDATE 9 Basestation← Vehicle CMD_POSE_UPDATE (lane change complete) 10 Basestation ←Vehicle CMD_POSE_UPDATE 11 Basestation ← Vehicle CMD_POSE_UPDATE 12Basestation → Vehicle CMD_POSE_REQUEST: high frequency updates requestedCMD_SET_SPEED: tell vehicle to start stopping when certain positionachieved CMD_LIGHTS: set right turn signal on 12.5 Basestation ← VehicleCMD_POSE_UPDATE 13 Basestation ← Vehicle CMD_POSE_UPDATE 13.5Basestation ← Vehicle CMD_POSE_UPDATE 14 Basestation ← VehicleCMD_POSE_UPDATE (vehicle stopped at this point, no further update sentuntil new command received) 16 Basestation → Vehicle CMD_BRANCH: tellvehicle to take the right branch through intersection CMD_SET_SPEED:tell vehicle to achieve certain speed with given acceleration after turn17 Basestation ← Vehicle CMD_POSE_UPDATE 17.5 Basestation ← VehicleCMD_POSE_UPDATE 18 Basestation ← Vehicle CMD_POSE_UPDATE (vehiclecompleted turn and now on new drivable section, turns right turn signaloff) 18.5 Basestation → Vehicle CMD_POSE_REQUEST: request normal drivingfrequency updates (e.g., 1 second) 19 Basestation ← VehicleCMD_POSE_UPDATE 20 Basestation ← Vehicle CMD_POSE_UPDATE (target speedachieved) 21 Basestation ← Vehicle CMD_POSE_UPDATE

7.2.3 Dealing with Uncertainty:

Although the wireless transceivers of the system will guarantee thedelivery of messages, there is some uncertainly as to the delivery timeof these messages. The messaging protocol does not guarantee messagedelivery within any specified amount of time and, as a result, there issome amount of uncertainty of the lag between when a message is sent andwhen it is received. Thus, both basestation 22 and the vehicles 2 mustaccount for this uncertainty.

Fortunately, vehicle 2 is responsible for the low-level control (lanefollowing, etc. . . . ) and basestation 22 only needs to send high-levelcontrols to vehicle 2. This allows basestation 22 to send messages wellbefore they need to be acted upon by vehicle 2. For example, a speedchange command will instruct vehicle 2 to change speed after reaching acertain location. Vehicle 2 receives this message potentially severalseconds in advance, and then takes the appropriate action when it needsto (e.g., change speed after a certain marking 12 is read by vehicleimaging system 3).

Further, basestation 22 can create path plans for vehicles 2 thataccount for uncertain timing in the message delivery. Vehicles 2 willmaintain a safe distance behind other vehicles 2 so that they will haveample time to receive messages and act upon them.

Basestation 22 will also forward simulate the vehicle's 2 position.Since basestation 22 knows the speed of vehicle 2, it can estimate thevehicle's 2 actual position between receiving pose updates through theCMD_POSE_UPDATE message. This knowledge, along with statistics ofmessage delivery times can be used to better estimate when messagesshould be sent so they can be received and acted upon in a timelymanner.

8.0 Marker Obfuscation Through IR Transparent Film:

As described above, a series of markings 12 enables vehicles 2 toidentify their unique positions in the drivable surface. A techniquedescribed above for encoding markings in a way not visible to humansrelied upon printing the markings in an ink or dye that is not visible(transparent) to the human eye and absorbs light in the IR, NIR, or UVspectrum. By using a light source of the same light wavelength, thesemarkings appear black to the optical sensor but are nearly or completelyinvisible to humans.

Alternatively, markings 12 can be printed in standard visible ink ordye, for example used in commercial inkjet printers, laser printers orprofessional offset or silk screen printing machines. After the markingsare printed, a second layer is applied to cover those markings. Thissecond layer includes an ink or dye or a thin plastic film that istransparent above or below human visible wavelengths, but appears opaquein the human visible spectrum. Materials having such properties arecommercially available.

For the purposes of this example, near infrared (NIR) light withwavelength of approximately 790 nm will be discussed, but the sameapproach can be used for any non-visible portion of the light spectrum(UV, IR, NIR, etc.). When this surface is used with a vehicle imagingsystem 3 with an NIR responsive imaging sensor 46 under NIR light fromLED light source 44, the light will pass through the NIR-transparentmaterial, allowing the optical sensor to detect the markings 12underneath (most standard black ink/dye will still appear black to theoptical sensor under NIR light). To the human eye, only the surfacematerial will be visible since light in the visible spectrum will not beable to pass through. An illustration of this approach as well as theappearance to the human eye of a segment that uses this approach can beseen in FIGS. 40 and 41, respectively.

Such an approach provides an advantage in terms of ease of manufacturingand potentially low cost because codes can then be printed usingstandard ink or dye and standard printing techniques (ink jet, laser,offset printing machines, silk screen printing machines, etc.). Materialtransparent to non-visible light can then be applied using any method.Some examples include: printing, film, spray paint, stickers, decals,etc. This can also allow users to print their own drivable surfaces andthen simply apply the transparent material to the surface using any ofthe techniques mentioned.

It is envisioned that a software application (through a PC or web-basedinterface) can be provided that enables a user to design a drivablesurface according to their personal specifications. For example, theuser can develop large-format (e.g. 12 ft×30 ft) drivable surfaces thatuse custom designed drivable segments. Users can specify any road pieceshape they desire that includes combinations of straight segments andarcs of circles (each segment could be required to be of some minimumlength) or even more complex shapes like splines etc. The softwareapplication then processes the final network shape and decomposes itinto the necessary combination of segments. FIG. 42 shows an exemplary,non-limiting appearance of such an application.

This custom drivable surface can then be manufactured for the user usinga flexible material, such as vinyl, that can be rolled up, transportedand stored easily, taking up only a fraction of the space necessarycompared to a similar drivable surface made out of rigid plastic parts.The drivable surface will appear visually the same as how the userdesigned it, but will also contain the position identification markingswhich are hidden from view using the techniques described above. FIG. 43shows how an exemplary, non-limiting, final drivable surface sent to theuser might look after manufacturing.

In addition to the final drivable surface, the user can also be providedwith a file defining that particular network. The file can betransferred to the user's basestation 22 so that the basestation 22 caninteract with the unique structure of that drivable surface byidentifying the unique positions that each set of markings encodes andallowing vehicles 2 to generate plans accordingly.

The invention has been described with reference to exemplaryembodiments. Obvious modifications and alterations will occur to othersupon reading and understanding the preceding detailed description. It isintended that the invention be construed as including all suchmodifications and alterations insofar as they come within the scope ofthe appended claims or the equivalents thereof.

What is claimed is:
 1. A system comprising: a surface havingmachine-readable indications of locations, at least one indicationindicating lateral position with respect to the surface; and at leastone mobile agent adapted to travel along the surface, each mobile agentbeing narrower than the width of the surface and being capable ofassuming a plurality of different lateral positions while travelingalong the surface, each mobile agent being unconstrained in its lateralposition with respect to the surface, each mobile agent comprising: apropulsion mechanism, adapted to impart motive force to the mobileagent; a sensor, adapted to detect the machine-readable indications asthe mobile agent travels along the surface, to ascertain a currentlateral position of the mobile agent with respect to the surface; and amicrocontroller operatively coupled to the propulsion mechanism and thesensor, the microcontroller adapted to control movement of the mobileagent on the surface responsive to the detected machine-readableindications.
 2. The system of claim 1, wherein the microcontroller isfurther adapted to maintain a substantially consistent lateral positionof the mobile agent with respect to the surface.
 3. The system of claim1, wherein the microcontroller is further adapted to adjust the lateralposition of the mobile agent with respect to the surface, in response toa detected environmental condition.
 4. The system of claim 1, whereineach mobile agent further comprises a mobile wireless transceiveroperatively coupled to the microcontroller, the system furthercomprising: a basestation comprising a controller and a basestationwireless transceiver operatively coupled to the controller, wherein thecontroller is adapted to: determine via wireless communication from eachmobile wireless transceiver a current location of a corresponding mobileagent with respect to the surface based on machine-readable indicationsof locations detected by the sensor of the mobile agent; store a virtualrepresentation of the surface; determine, based on the virtualrepresentation and the current location of at least one mobile agent, atleast one action to be taken by at least one mobile agent; and transmit,via wireless communication, at least one signal to at least one mobilewireless transceiver of at least one mobile agent at least one mobileagent, each transmitted signal specifying at least one action to betaken by the mobile agent on the surface.
 5. The system of claim 4,wherein: the system comprises a plurality of mobile agents; and thecontroller is operative for controlling the interaction of the pluralityof mobile agents on the surface in a coordinated manner with each othervia wireless communication from the basestation wireless transceiver tothe mobile wireless transceivers of the plurality of mobile agents. 6.The system of claim 5, wherein the controller is operative forcontrolling at least one of the following of at least one of theplurality of mobile agents: a velocity or acceleration of the mobileagent; a set of machine-readable indications of locations the mobileagent follows on the surface; a changing of the mobile agent from oneset of machine-readable indications of locations on the surface toanother set of machine-readable indications of locations on the surface;a direction the mobile agent takes at an intersection of the surface;the mobile agent performing at least one of leading, following, andpassing another mobile agent on the surface; and at least one ofactivation and deactivation of at least one of a light and an audiospeaker of the mobile agent.
 7. The system of claim 6, furthercomprising a remote control configured to communicate with thebasestation, wherein the basestation is configured to be responsive tocommands issued by the remote control for controlling at least one ofthe following via the basestation: which one of a plurality of mobileagents is responsive to the commands issued by the remote control; atleast one of a velocity and an acceleration of a mobile agent responsiveto commands issued by the remote control; a changing of a mobile agentresponsive to commands issued by the remote control from at least oneset of machine-readable indications of locations on the surface to atleast another set of machine-readable indications of locations on thesurface; a direction a mobile agent takes at an intersection of thesurface responsive to at least one command issued by the remote control;a mobile agent responsive to commands issued by the remote control toperform at least one of leading, following, and passing another mobileagent on the surface; and at least one of activation and deactivation ofat least one of a light and an audio speaker of a mobile agentresponsive to at least one command issued by the remote control.
 8. Thesystem of claim 7, wherein the controller is operative for controlling,in response to at least one of movement of a remote controlled mobileagent and lack of movement of a remote controlled mobile agent, at leastone of the following of at least one mobile agent not under the controlof the remote control: a velocity or acceleration of the mobile agent; aset of machine-readable indications of locations the mobile agentfollows on the surface; a changing of the mobile agent from at least oneset of machine-readable indications of locations on the surface to atleast another set of machine-readable indications of locations on thesurface; a direction the mobile agent takes at a location on thesurface; the mobile agent performing at least one of leading, following,and passing another mobile agent on the surface; and at least one ofactivation and deactivation of at least one of a light and an audiospeaker of a mobile agent.
 9. The system of claim 4, wherein at leastone mobile agent is user-controllable, and wherein the basestation isconfigured to adjust the behavior of at least one mobile agent not undercontrol of a user.
 10. The system of claim 1, wherein themachine-readable indications comprise optically readable codes, andwherein the sensor of each mobile agent comprises an imaging system. 11.The system of claim 1, wherein each mobile agent comprises a toyvehicle.
 12. A method of controlling movement of at least oneself-propelled mobile agent on a surface having a plurality ofmachine-readable indications of locations on the surface, at least oneindication indicating lateral position with respect to the surface,wherein each mobile agent is narrower than the width of the surface andis capable of assuming a plurality of different lateral positions whiletraveling along the surface, and wherein each mobile agent isunconstrained in its lateral position with respect to the surface, themethod comprising: (a) while traveling on the surface, a mobile agentdetecting at least one of the machine-readable indications via themobile agent's sensor and ascertaining a current lateral position of themobile agent with respect to the surface; and (b) responsive todetecting the at least one machine-readable indications, the mobileagent controlling its movement on the surface.
 13. The method of claim12, wherein the mobile agent controlling its movement on the surfacecomprises the mobile agent maintaining a substantially consistentlateral position with respect to the surface.
 14. The method of claim12, wherein the mobile agent controlling its movement on the surfacecomprises the mobile agent adjusting its lateral position with respectto the surface, in response to a detected environmental condition. 15.The method of claim 12, further comprising: (c) the mobile agentwirelessly transmitting data regarding the detected at least onemachine-readable indication to a basestation; (d) responsive to the dataregarding the detected at least one machine-readable indication,determining a location of the mobile agent and updating a position ofthe mobile agent in a virtual representation; (e) determining an actionto be taken by the mobile agent based on the data regarding the detectedat least one machine-readable indication; and (f) wirelesslytransmitting a signal to the mobile agent to specify the action to betaken by the mobile agent.
 16. The method of claim 15, furthercomprising controlling the interaction of the plurality of mobile agentson the surface in a coordinated manner with each other via wirelesscommunication from the basestation to the plurality of mobile agents.17. The method of claim 16, further comprising, at the basestation,controlling at least one of the following of at least one of theplurality of mobile agents: a velocity or acceleration of the mobileagent; a set of machine-readable indications of locations the mobileagent follows on the surface; a changing of the mobile agent from oneset of machine-readable indications of locations on the surface toanother set of machine-readable indications of locations on the surface;a direction the mobile agent takes at an intersection of the surface;the mobile agent performing at least one of leading, following, andpassing another mobile agent on the surface; and at least one ofactivation and deactivation of at least one of a light and an audiospeaker of the mobile agent.
 18. The method of claim 17, furthercomprising performing actions in response to commands issued by a remotecontrol for controlling at least one of the following via thebasestation: which one of a plurality of mobile agents is responsive tothe commands issued by the remote control; at least one of a velocityand an acceleration of a mobile agent responsive to commands issued bythe remote control; a changing of a mobile agent responsive to commandsissued by the remote control from at least one set of machine-readableindications of locations on the surface to at least another set ofmachine-readable indications of locations on the surface; a direction amobile agent takes at an intersection of the surface responsive to atleast one command issued by the remote control; a mobile agentresponsive to commands issued by the remote control to perform at leastone of leading, following, and passing another mobile agent on thesurface; and at least one of activation and deactivation of at least oneof a light and an audio speaker of a mobile agent responsive to at leastone command issued by the remote control.
 19. The method of claim 18,further comprising, at the basestation, controlling, in response to atleast one of movement of a remote controlled mobile agent and lack ofmovement of a remote controlled mobile agent, at least one of thefollowing of at least one mobile agent not under the control of theremote control: a velocity or acceleration of the mobile agent; a set ofmachine-readable indications of locations the mobile agent follows onthe surface; a changing of the mobile agent from at least one set ofmachine-readable indications of locations on the surface to at leastanother set of machine-readable indications of locations on the surface;a direction the mobile agent takes at a location on the surface; themobile agent performing at least one of leading, following, and passinganother mobile agent on the surface; and at least one of activation anddeactivation of at least one of a light and an audio speaker of a mobileagent.
 20. The method of claim 15, wherein at least one mobile agent isuser-controllable, the method further comprising, at the basestation,adjusting the behavior of at least one mobile agent not under control ofa user.
 21. The method of claim 12, wherein the machine-readableindications comprise optically readable codes, and wherein the mobileagent detecting at least one of the machine-readable indicationscomprises the mobile agent using an imaging system.
 22. The method ofclaim 12, wherein each mobile agent comprises a toy vehicle.